多态的简介:
多态的弊端
提高了扩展性,但是只能使用父类的引用访问父类中的成员。
在使用多态的过程中,Animal a=new Cat();相当于是一次类型的提升,将Cat类型的对象转换成了父类Animal对象 。这时候Cat的对象便不能调用其特有的方法了。这是候要调用的话,便应该强制将父类的引用转换成子类类型。 Cat c=(Cat)a;这时候便能使用对象c调用Cat特有的方法了。
注意:在以上过程中自始至终我们都是在对子类的对象在做着变化。不能将父类对像转换为子类类型。我们能转换的 是父类引用指向了自己的子类对象时,该引用可以被提升,也可以强制转换。
一、在多态中成员函数的特点:
在编译时期:参阅引用型变量所属的类中是否有调用的方法。如果有,编译通过,如果没有编译失败。
在运行时期:参阅对象所属的类中是否有调用的方法。
总结起来:成员函数在多态调用时,编译看左边,运行看右边。
二、在多态中成员变量的特点:
无论编译和运行,都参考左边(引用型变量所书的类)
三、在多态中静态成员函数的特点:
无论编译和运行,都参考左边(引用型变量所书的类)