面向对象—多态、抽象类、接口
一、多态
多态概述
某一个事物,在不同时刻表现出来的不同状态。
- 举例
举例: Cat c=new Cat();
Animal a=new Cat();
猫可以是猫的类型。猫 m = new 猫();
同时猫也是动物的一种,也可以把猫称为动物。动物 d = new 猫();
多态的前提
a:要有继承关系。
b:要有方法重写。 其实没有也是可以的,但是如果没有这个就没有意义。
c:要有父类引用指向子类对象。
父 f = new 子();
多态成员访问特点
父 f = new 子();
a:成员变量
编译看左边,运行看左边。
b:构造方法
创建子类对象的时候,会访问父类的构造方法,对父类的数据进行初始化。
c:成员方法
编译看左边,运行看右边。
d:静态方法
编译看左边,运行看左边。
(静态和类相关,算不上重写,所以,访问还是左边的)
多态的好处与弊端
- 好处
a:提高了代码的维护性(继承保证)
b:提高了代码的扩展性(由多态保证)
- 弊端
不能使用子类特有的功能
解决办法:把父类的引用强制转换为子类的引用。(向下转型)