第五章
5.1 封装
封装(Encapsulation)实际上使用方法(Method)将类的数据隐藏起来,控制用户对类的修改和访问数据的程度,隐藏对象细节,将对象当作黑箱进行操作。通过构造方法(构造函数)封装初始化流程通过成员方法(函数)封装操作通过成员变量封装数据
5.2类语法细节
1.如果没有声明权限修饰的成员,只有在相同包的类程序代码中才可以直接存取,也就是“包范围权限”。如果想在其他包的类程序代码中存取某包的类或对象成员,则该类或对象成员必须是公开成员,在Java中要使用public加以声明。
2.如果定义类时,没有撰写任何构造函数,编译程序会自动加入一个无参数、内容为空的构造函数,称为默认构造函数。可以定义多个构造函数,只要参数类型或个数不同,这称为重载构造函数。
3.在Java中,this()代表了调用另一个构造函数,且this()调用只能出现在构造函数的第一行。
4.被声明为static的成员,不会让个别对象拥有,而是属于类。
5.以类命名实例来说,首字母是大写,以static使用习惯来说,是通过类名称与“.”运算符来存取。
6.在static方法或区块中不能出现this关键字。static方法中不能用非static数据或方法成员。
7.使用import static语法要注意名称冲突问题,有些名称冲突编译程序可通过以下顺序来解析。
局部变量覆盖:选用方法中的同名变量、参数、方法名称。
成员覆盖:选用类中定义的同名数据成员、方法名称。
重载方法比较:使用import static的各个静态成员,若有同名冲突,尝试通过重载判断。
第六章
继承:
面向对象中,为避免多个类间重复定义共同行为。(简单说就是将相同的程序代码提升为父类。)
特点:
这里接触到了新的关键词,extends,在java语言中用estends来继承父类的行为。
is-a原则,在java中子类只能继承一个父类。要开始理解多态,必须先知道操作的对象是“哪一种”。
多态,使用单一接口操作多种类型的对象。
在继承父类之后,定义与父类中相同的方法部署,但执行内容不同,称为重新定义。
如果某方法区块真的没有任何程序代码操作,可以直接使用abstract标识该方法为抽象方法,该方法不用撰写{}区块,直接“;”结束即可。
注意:
关键字extends是为了扩充和继承父类的行为。
在java中一个子类只能继承一个父类。
在判断操作对象是“哪一种”的时候,检查语法的逻辑是否正确,方式是从=右边往左边读:右边是不是一种左边呢(右边类是不是左边类的子类)?
在重新定义中,子类必须撰写与父类方法相同的签署,如果因为疏忽打错字就会完全不同(虽然编译会成功,但是行为会完全不同),但在JDK5后标注@Override,表示要求编译程序检查是否真的重新定义父类中某个方法。
子类如果继承抽象类,对于抽象方法有两种做法,一种是继续标注该方法为abstract(必须在class前标注abstract),另一种就是操作抽象方法,如果都没有实施,则会出现编译错误。
继承与法细节:
特点:
protected成员权限关键字,相同包中的类可以直接存取,不同包中的类可以在继承后的子类直接存取。(不开放访问权限,但可以直接存取
如果想要取得父类中的方法定义,可以调用方法前,加上super关键字。
在class前使用了final关键字定义,那么表示这个类是最后一个,不会再有子类,也就相当于不能再被继承。在定义方法时候也可以限定为final,表示最后一次定义方法了,也就是子类不可以重新定义final方法。
在java继承中一定继承了java.lang.Object,简单来说任何类追溯至最上层类中一定是Object父类。
注意:
JAVA中有3个权限关键字,public、protected与private,但实际上有4个权限范围。
若原来成员public,子类中重新定义时不可谓private或protected。
在JDk5之前,重新定义方法时除了可以定义权限较大的关键字之外,其他部分必须与父类中方法签署完全一致。
在创建ArrayList实例时候,可以指定内部数组初始容量,如果使用无参数构造函数,则默认容量为16。
垃圾收集:在执行流程中,无法通过变量参考的对象,就是GC(Garbage Collection) 认定的垃圾对象。
抽象类:虽然是抽象方法,但在go()方法中,还是可以调用。
代码托管(ch5,ch6)
脚本截图
原文地址:https://www.cnblogs.com/2332175994-1314/p/8647472.html