Java编程思想 第8章 多态

来源:互联网 发布:2017年开淘宝店铺 编辑:程序博客网 时间:2024/06/06 02:55

1.private方法其实是final方法,因为基类的private方法对于子类来说是不可见的,因此无法被复写(override),这和final是一致的。


2.如果一个方法被声明为final,则就会关闭对这个方法的动态绑定,可以提高一点性能。


3.多态是一种让程序员“将改变的事物与未变的事物分离开来”的技术。


4.对域的访问操作都由编译器解析,不是多态的。例如,父类A有个域field,子类B也有一个域field。将一个A的引用指向B的对象,调用A.field,则这里访问的是A类对象的域field,因为是用A类引用访问的。如果是调用一个在B中被重载的方法来访问field,因为重载,将调用B类的方法,B类的方法访问的是B类中的field域。如果如果子类B的引用要访问父类A中的field域,需要用super.field。


5.构造器的调用顺序

零.在其他任何事物发生前,将分配给对象的存储空间初始化为二进制的零,数据成员或者为零,或者为和零等价的值,引用类型就是null。

一.调用基类的构造器,而且是递归到最底层,只用底层的构造完成了,才会返回上一层,执行上一层的任务;

二.按声明的顺序调用数据成员的构造函数,以及基本类型的初始化;

三.调用导出类构造器的主体,也就是说,你在导出类里写的东西,现在才会被执行。


6.在构造器中调用被子类覆盖的方法是会产生很难预料的结果的。

在构造器内部,整个对象可能只有基类的部分被初始化,子类还没有被初始化。然而,如果这时在父类的构造器中调用一个被子类覆盖的方法,这个动态方法调用会向外深入到继承结构的内部,调用子类的方法,而这个方法需要操作的数据成员还未初始化,它们还是零值。


7.协变返回类型

子类中覆盖的方法,它的返回值的类型可以是父类的这个方法的返回值类型的子类。



原创粉丝点击