读书笔记:《JAVA编程思想(Thinking in Java)》第8章 多态

多态的作用

多态方法允许一种类型表现出与其他相似类型之间的区别,只要它们都是从同一个基类继承而来的。
把某个对象的引用视为对其基类饮用的做法称作向上转型,如:
Shape s = new Circle();
s.draw();
由于后期绑定,还是正确的调用了Circle.draw()方法。
方法调用绑定:1、前期绑定(在程序执行前进行绑定)
2、后期绑定(在运行时根据对象的类型进行绑定。Java中除了static和final方法之外,其他所有的方法都是后期绑定。它会自动发生)
由于有多态机制,我们可根据自己的需要对系统添加任意多的新类型,而不需要更改方法调用。
缺陷:1、基类声明private的方法,对于子类不可见,也不会实现多态。
2、对基类域的访问必须显示的声明super.field(一般不会出现,域都设置为private,并且子类的域名一般不会相同)。

构造期与多态

因为基类中的成员(一般都是private)不能被子类访问并构造,所以基类的成员必须由基类的构造器来初始化。=> 每个子类都必须默认调用基类的构造器。
调用顺序:1)从最基类构造器开始顺序构造。
2)调用子类的成员类的构造器。
3)调用子类的构造器。

协变返回类型

Java5中添加了协变返回类型,对于返回值为类的相同的方法,子类可以返回一个基类的字类型。如基类方法返回值为Shape类,同样的方法子类的返回值可以为Circle类。

向下转型

向上转型是安全的,向下转型是极不安全的。
在Java中,所有转型都会得到检查。这种在运行期间对类型进行检查的行为称作“运行时类型识别”(RTTI)。

猜你喜欢

转载自blog.csdn.net/weixin_42628594/article/details/82935193