动态方法调度:
当通过父类引用调用重写方法时,在运行时会调用子类中的重写版本。动态方法调用要以方法重写为前提。
运行时多态:
运行时多态的实现机理:
总结:方法重写是前提、多态调度是手段、多态是最终的目的
运行时多态的优点:灵活
Animal a;
a = new Dog();
a.eat();
a = new Cat();
a.eat(); //运行时多态:方法名相同,得到的结果不同
运行时多态的两个要素:
(1)在子类中重写超类中的方法
(2)使用超累引用调用重写方法。
在自己的类中定义的toString()方法就是重写方法
注意不要混淆:
使用超类引用调用成员变量时,调用的是超累的成员变量。
多态的两种形式:
运行时多态:动态方法调度实现
编译时多态:重载方法,编译时通过方法匹配实现的