类的多态性
方法的重载
重载(overload)是指同一个类中的多个方法可以同名,但参数的列表必须不同(参数类型、参数列表、参数顺序)。
方法的重写
重写(override)是指子类重新定义了超类或父类中的同名方法。在程序运行时究竟执行同名覆盖(重写)方法中的,哪一个方法,取决于调用该方法的对象所属的类是父类还是子类。Java寻找执行方法的原则是:从对象所属的类开始寻找匹配的方法执行;如果当前类中没有匹配方法,则逐层向上依次在父类中寻找匹配方法,直到object类。
多态
三个必要条件:
- 要有继承关系;
- 要有方法重写;
- 要有父类引用指向子类对象;
对于同样的方法调用,依靠对象自己来表现出具体的特性。
——成员访问特点
成员变量:编译看左边,运行看左边
成员方法:编译看左边,运行看右边
静态方法:编译看左边,运行看左边
——多态的好处和弊端
——好处
提高了程序的维护性(由继承保证)
提高了程序的扩展性(由多态保证)
接口性
——弊端
不能访问子类特有功能
——多态中的转型问题
——向上转型
从子到父:父类引用指向子类对象
——向下转型
从父到子:父类引用转为子类对象(强制类型转换)