在经过十周的java学习后,我对于原本一窍不通的课程又有了新的理解,它也并不是原本我不认识之前高冷的模样,我在慢慢的接触它,认识它,了解它。但现在为止,我对于我所学习的java中的“面向对象编程”做一个个人总结,其中观点仅代表个人,如有错误,敬请纠正。
在我所学习的教材中,将“面向对象编程”分为1,2,3三个章节,我也将我所学习的内容分为三个点来进行总结。
在这个章节里面,我们知道了什么是面向对象,如果用一个比喻来说的话,面向对象就像是养花一样,买个花瓶,再买束鲜花,不喜欢花就换花,不喜欢花瓶就换花瓶。与之相对应的就是面向过程编程,在很多时候,面向过程对于编程来说更加简单,因为你思考的只是怎么解决这个问题,就像是买的一盆连花带盆的塑料模板,虽然方便,但是不够灵活,但是并不是说面向过程不好,只是适用的场合不同。
在java之前,我们学习了数据类型,循环之类的简单程序,但那是很简单的用法,对于很多对象来说,是没有办法用一个数据类型就把它定义完整的,在此举例矿泉水瓶,它有长宽高,有名字,有材料等等,它们共同构成一个对象,所以在java中就有了类,也就是class的诞生。
定义类:class 类名{所含变量定义}
类名 对象名=new 类名();
对象名.成员变量名
同数组名相同,对象名也表示一个引用,对象名赋值并不是将对象内的内容进行赋值,而是引用赋值。
将编写一遍的代码可以多次进行使用。
Void 函数名称(类型1参数1,类型2参数2…..){函数内容;return 和函数返回类型一致的某个变量或对象;}
**没有返回类型(就是上面括号中没有内容)的函数也可以使用return,代表跳出该函数,直接使用return;即可。
注意使用的简单数据类型、引用数据类型之间的区别。
函数重载也称静态多态,在代码中定义了两个名字相同但是参数不同的函数,在调用的时候就可以根据参数的不同来辨别两个函数,但是不能简单的将两个函数名定义的一样,需要函数参数的个数不相同,个数相同类型不同,个数相同类型相同但是顺序不同。
构造函数也是一种函数,需要遵守函数名称与类的名称相同,不含返回类型的规则。
**其中,当类的对象被建立,构造函数就会被自动调用,在函数生命周期里,构造函数只会被定义一次,且它可以被重载,如果一个类中没有定义构造函数,系统会自动为这个类产生默认的构造函数,该函数没有任何参数,不做任何事情。
静态static随着类的加载而加载,优于对象存在,被类的所有对象共享,可以通过类名调用。
常用于保存跨对象信息,存储对象个数。
有静态变量肯定就有静态函数,它们统称为静态成员。
对所有对象的共同信息进行初始化,并对所有对象只执行一遍。
实现封装:将成员定义为私有的,并在成员之前加上private,将成员定义为公共的,可以在成员之前加上public。私有只能在类的内部被访问。
在类的定义文件头加上package 包名。
同一个包中直接指明类名就可以访问
不同的包中指明类的路径。
Private类型的成员只能在定义它的类的内部被访问。
Default可以被它的类的内部访问也可以被这个包中的其他类访问。
Protected可以在定义它的类的内部访问,也可以被这个包中的其他类访问,还可以被包外的子类访问。
Public可以被所有其他类访问。
在类中再定义一个类,就是用于关系比较复杂的对象。
这个世界总有很多对象是具有很多相同的点的,所有没有必要在定义一个类的时候就去重新写一次,继承就是将相同的部分提出来,只写一遍,下次想用的时候就可以直接使用,相当于公共部分。
Class 子类 extends 父类{}
一个子类只能有一个父类,但是可以多重继承,比如父亲有了儿子,儿子也可以有孙子,相当于孙子间接性继承父亲,可以理解为隔代遗传。
函数传入的形参可以使父类类型,而实际传入的可以使子类对象。
函数的返回类型是父类类型,而实际返回的可以是子类对象。
在这些内容中,有很多是我在学习中还存在困惑的地方,希望时间能够见证我的进步。