多态学习

方法的重写、重载以及动态连接构成了多态。

父类或接口的引用指向了其子类对象是多态在代码中的体现。

多态提高了代码的扩展性,例如方法method(Animal a)可以传cat.dog.pig等对象。

多态的前提:1.继承或实现2.覆盖

向上转型(企业中也称向上造型),限制子类方法的使用,向上转型始终由子类向接口或父类,具体类向抽象类转换,总是安全的。还有一个好处扩展使用对象。

向下转型,允许子类方法的使用,向下转型不安全,可能出现错误。通常会出现instanceof关键字进行类型判断,防止出错。

多态特点:

成员变量,编译时,参考引用变量所属类中的是否有调用的成员变量,有则通过,无则报错。

     运行时,同样参考引用变量所属类中所调用的成员变量。

      简单说就是编译与运行时都参考等号左边的引用变量的所属类中的成员变量。

      这个特殊情况仅做了解。

成员方法,编译时,参考引用变量所属类中的是否有调用的成员变量,有则通过,无则报错。

     运行时,参考的对象所属的类中是否有对应方法,动态连接

      简单说编译看左边,运行看右边。

静态方法,调用方法为(类名.静态方法),静态方法属于类域。 

对象的多态性,静态方法属于类,不涉及多态属性。

原文地址:https://www.cnblogs.com/Sword007/p/9704169.html