2 回答
![?](http://img1.sycdn.imooc.com/545864490001b5bd02200220-100-100.jpg)
TA贡献1836条经验 获得超3个赞
在这段代码中:
Parent parentObject = new Child();
((Child)parentObject).childMember = 5;
该parentObject对象的实际/运行时类Child,这解释了为什么所有的作品。
但是 parentObject 如何为 childMember 存储值,因为它是 Parent 类型,而 parent 没有 childMember?
这个问题更适用于这段代码:
Parent parentObject = new Parent();
((Child)parentObject).childMember = 5;
但是,在这种情况下,强制转换((Child)parentObject)将不起作用,并且 Java 将ClassCastException在运行时引发 a ,正如您所期望的那样。
![?](http://img1.sycdn.imooc.com/54584d6100015f5802200220-100-100.jpg)
TA贡献1803条经验 获得超3个赞
首先,引用是 type Parent,它指向的对象是 type Child,因此您的整个逻辑在另一个答案中详细说明。
但这是一个非常简单的例子,让我们做一个更有趣的例子:
static class Parent {
public int x = 5;
}
static class Child extends Parent {
public int x = 3;
}
有多少x的不Child呢?出色地...
Arrays.stream(Child.class.getFields())
.map(Field::getName)
.forEachOrdered(System.out::println); // x AND x again
那么你如何访问它们中的每一个?
Child c = new Child();
System.out.println(c.x); // 3
Parent p = c;
System.out.println(p.x); // 5
添加回答
举报