我有一个类Super和几个子Sub1,Sub2,...
有没有办法实例化可以共享同一个超级实例的对象sub1,sub2?
情况来自内部嵌套类配置,如下所示:
Super{
superFields...
Sub1{...}
Sub2{...}
........
}
但内心的claeses已经成长得太多,我觉得将它们放在单独的文件中会更加舒适。他们需要共享同一个superFields实例,所以我的问题。
答案 0 :(得分:2)
您可以轻松地分解内部类,并让每个类引用当前包含类的实例。构造新类时,可以将同一个实例传递给它们,然后新类可以使用访问器来获取包含类的字段。
class Super {
String fieldA;
int fieldB;
...
}
在新文件中,如下所示:
class Sub1{
Super myOldContainingClass;
Sub1(Super myOldContainingClass) {
this.myOldContainingClass = myOldContainingClass;
}
void myMethod() {
System.out.println(myOldContainingClass.getFieldA());
System.out.println(myOldContainingClass.getFieldB());
}
}
答案 1 :(得分:2)
通过将超类作为其所有构造函数的参数来实现内部类。
这就是你可以做的事情:
public class Sub1 {
private Superclass superclass;
public Sub1(Superclass superclass) {
this.superclass = superclass;
}
}
并且只要您想在超类中实例化子类:
Sub1 sub = new Sub1(this);