多态性
多态是运行时行为。 编译看左边,运行看右边。
多态,只有等到方法调用的那一刻,解释运行器才会确定所要调用的具体 方法,这称为“晚绑定”或“动态绑定”。
引用一句Bruce Eckel的话:“不要犯傻,如果它不是晚绑定,它就不是多态。”
多态作用:提高了代码的通用性,常称作接口重用
前提:需要存在继承或者实现关系,有方法的重写。
成员方法:编译时,要查看引用变量所声明的类中是否有所调用的方法。 运行时,调用实际new的对象所属的类中的重写方法。
成员变量:不具备多态性,只看引用变量所声明的类。
从子类到父类的类型转换可以自动进行 从父类到子类的类型转换必须通过造型(强制类型转换)实现 无继承关系的引用类型间的转换是非法的
若子类重写了父类方法,就意味着子类里定义的方法彻底覆盖了父类里的 同名方法,系统将不可能把父类里的方法转移到子类中。 对于实例变量则不存在这样的现象,即使子类里定义了与父类完全相同的 实例变量,这个实例变量依然不可能覆盖父类中定义的实例变量
ps:因为之前学了一点,所以文章在多态这里开始