假设我有两个类,A和B。B是A的子类,B有一个特定于该类的变量,例如:
private class A{} private class B extends A{int x = 5;}
我把B存储为A
A instB = new B();
在这个例子中它是一个常量,但在我的程序中它不是,所以我需要一些方法来访问变量本身。
v7pvogib1#
如果你真的需要将对象存储为'A'而不是'B',那么我相信你唯一的答案就是将'instB'转换为'B',以便访问该成员。
int member = ((B)instB).x;
但是,如果您需要从超类访问子类成员,那么这种软件设计似乎有些不对劲。
kqlmhetl2#
如果你确定你的类instB是A类型,InstB将不能访问B类的所有变量或方法。你将不得不把变量放在A类中,或者将你的Object初始化为B类型。
2条答案
按热度按时间v7pvogib1#
如果你真的需要将对象存储为'A'而不是'B',那么我相信你唯一的答案就是将'instB'转换为'B',以便访问该成员。
但是,如果您需要从超类访问子类成员,那么这种软件设计似乎有些不对劲。
kqlmhetl2#
如果你确定你的类instB是A类型,InstB将不能访问B类的所有变量或方法。你将不得不把变量放在A类中,或者将你的Object初始化为B类型。