运行时多态的三原则:
(应用时为覆盖)
1、对象不变;(改变的是主观认识)
2、对于对象的调用只能限于编译时类型的方法,如调用运行时类型方法报错。
在上面的例子中:Animal a=new Dog();对象a的编译时类型为Animal,运行时类型为dog。
注意:编译时类型一定要为运行时类型的父类(或者同类型)。
对于语句:Dog d=(Dog)a。将d强制声明为a类型,此时d为Dog(),此时d就可以调用运行时类型。注意:a和d指向同一对象。
3、在程序的运行时,动态类型判定。运行时调用运行时类型,即它调用覆盖后的方法。 |
|