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

问题描述 投票:0回答:2

假设我有 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 class variables subclass superclass
2个回答
1
投票

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

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

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


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.