簡體   English   中英

父母班子女的實例

[英]Instance of child in parent class

我在Java中有課: A B類擴展了A類。

A類持有BA實例。

我注意到當我調用類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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM