多态
- 事物 存在的多种形态
多态的前提
- 有
继承
关系 - 有方法
重写
有父类引用指向子类对象
多态成员访问特点
成员变量
- 编译看
左边
(父类),运行看左边
(父类)。
- 编译看
成员方法
- 编译看
左边
(父类),运行看右边
(子类)。动态绑定
- 编译看
静态方法
- 编译看
左边
(父类),运行看左边
(父类)。 - 静态和类相关,
算不上重写
,只是子类运行时覆盖了父类的静态方法,所以访问还是看父类。 - 只有
非静态成员方法
,编译看左边,运行看右边
。
- 编译看
父类引用指向子类对象,就是
向上转型
。- Animal a = new Dog();
指向子类对象的
父类引用
,强转成子类
类型,使用子类中特有的方法
。向下转型
。把一个父类对象赋给子类引用变量时,就需要进行强制类型转换。Animal a = new Dog(); Dog dog = (Dog)a;
引用变量的强制类型转换
引用变量
只能调用
它编译时类型
的方法,而不能调用
它运行时
类型的方法,即使他实际所引用的对