Java 共享一个公共高级实例的子实例
我有一个超类和几个子类Sub1,Sub2 有没有方法实例化共享同一超级实例的对象sub1、sub2 这种情况来自内部嵌套类配置,如下所示:Java 共享一个公共高级实例的子实例,java,subclass,inner-classes,Java,Subclass,Inner Classes,我有一个超类和几个子类Sub1,Sub2 有没有方法实例化共享同一超级实例的对象sub1、sub2 这种情况来自内部嵌套类配置,如下所示: Super{ superFields... Sub1{...} Sub2{...} ........ } 但是内部类别增长太多了,如果将它们放在单独的文件中,我会觉得更舒服。它们需要共享同一个Superfeld实例,所以我的问题是。您可以轻松地划分出内部类,并让每个类引用当前包含类的实例。构造新类时,可以将同一实
Super{
superFields...
Sub1{...}
Sub2{...}
........
}
但是内部类别增长太多了,如果将它们放在单独的文件中,我会觉得更舒服。它们需要共享同一个Superfeld实例,所以我的问题是。您可以轻松地划分出内部类,并让每个类引用当前包含类的实例。构造新类时,可以将同一实例传递给这两个类,然后新类可以使用访问器获取包含类的字段
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());
}
}
内部类通过将超类作为其所有构造函数的参数来实现 所以你也可以这么做:
public class Sub1 {
private Superclass superclass;
public Sub1(Superclass superclass) {
this.superclass = superclass;
}
}
当您想从超类中实例化子类时:
Sub1 sub = new Sub1(this);
我明白了,你是说用作文。我更喜欢直接访问父成员——就像在嵌套类配置中一样——因为要访问的成员很多,不想让代码太混乱。但我很惊讶继承不可能实现这一点,所以我必须在当前嵌套类aproach或您提到的组合类之间进行选择。谢谢你,真聪明!我必须复制每个子类中的所有父成员,但代码会更干净,因为我不必到处使用ACCESOR。所以这实际上是一个分解的内部类!!。我不知道。Thanks@pepin-如果其中一个答案适合您,则您应将其标记为已接受(投票计数器下方的勾号)