多态成员方法
多态出现后会导致子父类中的成员变量有微弱的变化。看如下代码
多态成员变量
当子父类中出现同名的成员变量时,多态调用该变量时:
编译时期:参考的是引用型变量所属的类中是否有被调用的成员变量。没有,编译失败。
运行时期:也是调用引用型变量所属的类中的成员变量。
简单记:编译和运行都参考等号的左边。编译运行看左边。
多态出现后会导致子父类中的成员方法有微弱的变化。看如下代码
编译时期:参考引用变量所属的类,如果没有类中没有调用的方法,编译失败。
运行时期:参考引用变量所指的对象所属的类,并运行对象所属类中的成员方法。
简而言之:编译看左边,运行看右边
向上转换即孔子化妆帮父亲教书
向下转换即孔子卸妆做自己的事情,但卸妆要累一点
Transport t1=new Car(); //向上类型转换
Car trans=(Car) t1;//向下类型转换 必须加强制符号
Transport transport=new Car();
Car car=(Car) transport;
Plane plane=(Plane)transport;//1.编译时是正确的2.运行时是错误的。因为transport是Car类型的,他只能和上级强制,不能和同等级的类型强制,为了防止异常要用到
所以要用到instanceof
if(transport instanceof Plane){
Plane plane=(Plane)transport;
}else{
System.out.println("无法转换");
}