簡體   English   中英

父類初始化時創建子類對象

[英]Create Sub-Class Object when Parent Class is initialized

當父類被初始化(構造)時,有沒有一種方法可以自動初始化子類?

例如這樣:

public class Parent {
    public Parent() { //Constructor
    ...
    }

    public class Child {
        public void foo() {
        ...
        }
    }
}

我希望能夠做這樣的事情:

Parent p = new Parent();
p.Child.foo();

有任何想法嗎? 我認為這全都是關於靜態性的,但是我不確定,因此可以提供任何幫助。 提前致謝。

你不能那樣稱呼它。

如果子類必須是非靜態類並且駐留在父類內部,則在使用其任何方法之前,您必須在父類中或在其外部啟動它。

您有此選項。

public class Parent {

    private Child child;

    public Child getChild() {
        return child;
    }

    public Parent() { //Constructor
        this.child = new Child();
    }

    public class Child {
        public void foo() {
            ...
        }
    }
}

之后,您可以通過這種方式調用foo()方法。

Parent p = new Parent();
p.getChild().foo();

也許像這樣:

public class Parent {
    public Parent() { //Constructor
      foo();
    }

    protected void foo() {
    // Do nothing in parent
    }
}

public class Child {
        @Override
        public void foo() {
        ...
        }
}

編輯:這不是正確的答案,因為孩子不擴展父母。

試試這個代碼:

第一部分是主體。 您必須調用que Parent並使其實例成為Child(這是代碼的第一行),然后,您可以使用child方法。

    Parent child = new Parent().new Child();
    child.foo();

另一方面,該類:

    public class Parent {

public Parent(){

}

protected void foo(){

}

public class Child extends Parent{
    public Child(){

    }

    @Override
    public void foo(){
        System.out.println("I am the child!!");
    }
}

}

如您所見,這與您非常相似,但是您必須在子級“ extends Parent”中編寫以指定該類的父級。

希望對您有幫助!!!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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