如何从超类访问子类变量?

How to access subclass variable from superclass?

提问人:BlockManBlue 提问时间:4/6/2023 最后编辑:BlockManBlue 更新时间:4/6/2023 访问量:59

问:

假设我有 2 个类,A 和 B.B 是 A 的子类,B 有一个特定于该类的变量,例如:

private class A{}
private class B extends A{int x = 5;}

我把 B 存储为 A,

A instB = new B();

如何在 B 中访问 x?在这个例子中,它是一个常量,但在我的程序中它不是,所以我需要某种方法来访问变量本身。

Java 变量 超类

评论


答:

0赞 Estefania MQ 4/6/2023 #1

如果确定类 instB 属于 A 类型,则 InstB 将无法访问类 B 的所有变量或方法。您必须将变量放在类 A 中或将 Object 初始化为类型 B。

2赞 Bruno 4/6/2023 #2

如果您确实需要将对象存储为“A”而不是“B”,那么我相信您唯一的答案是将“instB”转换回“B”以访问该成员。

int member = ((B)instB).x;

但是,如果您需要从超类访问子类成员,那么该软件设计的某些内容似乎就不对了。

评论

0赞 BlockManBlue 4/6/2023
这奏效了!谢谢!我之所以这样存储它,是因为它是一个具有各种子类的超类数组。这是为了一个游戏。
0赞 Bruno 4/6/2023
我很高兴它奏效了,祝你的项目好运!