概述
同一个对象,在不同时刻表现出来的不同时态。
多态的前提和体现
有继承/实现关系
有方法重写
有父类引用指向子类对象
成员访问特点
成员变量:编译看左边,执行看左边
成员方法:编译看左边,执行看右边
因为成员方法有重写,而成员变量没有,所以成员变量是左边的
优点与弊端
优点:提高了程序的拓展性
弊端:不能使用子类的特有功能
使用方法
定义方法时,使用父类型作为参数,将来在使用时使用具体的子类型参与操作
Opreator.java
public void useAnimal(Animal a){
a.eat();
}
Demo.java
public static void main(String[] args){
Opreator o = new Opreator();
cat c = new cat();
dog d = new dog();
o.useAnimal(c);
o.useAnimal(d);
}
在调对象的方法时实现了Animal a = new cat()或Animal a = new dog()
相当于多态操作
多态转型
在该例子中,Animal中只有eat()一个方法
为了使用子类的独有方法必须向下转型进行使用