日期:2014-05-17  浏览次数:20672 次

关于 java cast 问题,你明白不?
public class Parent {
private  String parstr="parentString";
}


public class Child extends Parent {
private  String child="childstrString";
public static void main(String[] args) {
Parent p  = new Child(); -》》此处Child 中的child
去哪里?
Child c = (Child)p;此处Parent 中parstr在那里
}
}

高手们,是不是 在内存中直接删除掉了,还是根本就没有初始化(经验正已初始化)。我不明白 这个地方,
各位给我解释下,cast转换 时候 上溯时 子类中的成员变量和方法在内存中如何构造和流转,下溯时 父类中的成员变量和方法在内存中如何构造和流转?

------解决方案--------------------
你所问的字符串都一直都存在。。其实这种继承关系,不管怎么变,始终都是先初始化父类变量,调用父类构造方法,再初始化子类变量,调用子类构造方法,记住这个原则就行
------解决方案--------------------
楼主还不了解面向对象
Parent p  = new Child(); -》》此处Child 中的child
是父类的引用指向子类的对象,
子类拥有父类访问权限的属性和方法
------解决方案--------------------
引用:
看来java 还是有设计缺陷的。

你可以给oracle java团队写建议