子类实例转化为父类实例后 是否还从属(instanceof)于子类?
这个被转化得来的父类实例是否能访问子类重写的方法、子类新添加的方法、子类新添加的成员属性、是否还能转化为子类实例?以下测试:
创建一个父类和一个子类,父类拥有成员变量a、方法fun(),子类拥有继承的成员变量a、新定义的成员变量b、重写的方法fun()、新定义的方法fun2()
class Father
{
public int a;
public Father(int a){
this.a = a;
}
public Father(){
}
public void fun(){
System.out.println("父类方法fun已经执行");
}
}
class Son extends Father
{
public int b;//b为子类新增加的成员变量
public Son (int a,int c){
super(a);
this.b = c;
}
public void fun(){
System.out.println("子类重写父类方法fun已经执行");
}
public void fun2(){
System.out.println("子类新增加的方法fun2已经执行");
}
}
再main函数创建子类实例s,强制转化为f,再把f强制转化为s1
Son s = new Son(1, 2);
Father f = (Father)s;
Son s1 = (Son)f;
测试以上三个实例能否访问子类新定义的成员变量,重写的方法,新定义的方法