[英]Instance of child in parent class
我在Java中有課: A
。 B
類擴展了A
類。
A類持有B
類A
實例。
我注意到當我調用類B
的構造函數時(當我在類A中初始化此參數時),它執行super(),創建A
的新實例並初始化所有字段。
我怎樣才能告訴B
類, A
類的具體實例(在哪個init字段中)-它是其父類?
您的問題確實很難理解,但是我想問題是這樣的(您的方法):
public class A {
public B b = new B();
}
public class B extends A {
}
因此,當您運行new A()
您會得到一個StackOverflowError
。
以我的實際經驗,我從不需要這樣的設計,因此我強烈建議您重新考慮您的方法。 但是,如果確實需要,則可以使用專用的init()
方法,例如:
public class A {
public B b;
public void init() {
b = new B();
}
}
A a = new A();
a.init();
如果您需要在B中使用A,則可以使用B的自定義構造函數來實現:
class B extends A {
A a;
public B() {
super();
this.a = this;
}
}
這種情況比較難,所以您需要:
class A {
B b;
}
class B extends A {
public B() {
super();
b = this;
}
}
請注意,您不應將B傳遞到對super()的調用中,因為不會初始化B,您應將其作為B構造函數的最后一步。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.