思考,为什么Java会出现多态,即多态的好处是什么?
1:什么是多态?
答:同一个对象在不同时刻体现出来的的不同状态,例如:水可以是气态(水蒸气)、固态(冰)和液态(水)。他们是is a 关系。即水蒸气是水、冰是水、水是水,所以多态的前提之一是有继承关系或者实现关系。
即多态的前提:
a:有继承或者实现关系;即:
class Fu {}
class Zi extends Fu {}
b:有方法重写,不然没有存在的意义;
c:有父类或者父接口引用指向子类对象,即:
Fu f = new Zi();
2.多态的成员访问特点:
A:成员变量
编译看左边,运行看左边,即访问的都是父类的成员变量;
B:构造方法
子类的构造都会默认访问父类构造;
C:成员方法
编译看左边,运行看右边(因为方法重写的原因);
D:静态方法
编译看左边,运行看左边;
3.多态的好处:
- 提高代码的维护性(继承关系)
- 提高代码的扩展性(因为多态)
4.多态的弊端:
父类不能用子类的特有功能。因为父类是一开始设计好的,但是随着时间的发展,子类的新拓展的功能越来越多,子类更新的功能父类无法使用,这是不合理的,所以引出向下转型思路:
Zi z = (Zi)f;//要求f必须是能够转换为Zi的。
与之对应的向上转型:
Fu f = new Zi();