多态的向上转型:
(1)本质:父类的引用指向了子类对象
(2)语法: 父类类型 引用名 = new 子类类型();
(3)特点(规则):编译类型看左边,运行类型看右边
可以调用父类中的所有成员(遵守访问权限)
不能调用子类特有成员(原因:在编译阶段,能调用哪些成员,是由编译类型来决定的)
最终运行效果由子类具体实现决定(调用方法时,按照从子类(运行类型)开始查找方法)
多态的向下转型:
(1) 语法: 子类类型 引用名 = (子类类型)父类引用 进行强制转型 ,此时,编译类型是子类类型,运行类型也是子类类型
(2)只能强转父类的引用,不能强转父类的对象
(3)要求父类的引用必须指向的是当前目标类型的对象(也就是这个引用 必须之前是向上转型后的结果)
(4)当向下转型后,可以调用子类类型中所有的成员