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



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

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

我将B存储为a,

A instB = new B();

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

如果你真的需要将对象存储为'A'而不是'B',那么我相信你唯一的答案是将'instB'强制转换回'B',以便你访问该成员。

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

但是,如果您需要从超类访问子类成员,那么软件设计的某些方面似乎不太正确。

如果你确定你的类instB是A类型的,instB将无法访问类b的所有变量或方法。你必须将变量放在类A中,或者将对象初始化为b类型。