簡體   English   中英

在子類中如何使用在父類中創建的對象?

[英]How to use objects created in Parent class inside Child class?

public class test1 
{
    classA obj = new classA()
}


public class test2 extends test1 
{
    public void test() {

        //unable to access object 'obj'
    }
}

從子類中,我無法訪問在父類中創建的對象。

您尚未為test1類的obj成員指定任何訪問修飾符,這默認情況下將其打包為私有。 因此,僅當test2子類與test1處於同一軟件包中時,您才可以訪問它。 如果將其更改為protected classA obj = new classA(); ,無論test2位於哪個軟件包中,您都可以訪問它。

也就是說,最好將所有成員定義為私有成員,並通過accesssor方法授予對它們的訪問權限。

要允許派生類訪問父成員,您需要指定protectedpublic

public class test1 {
    protected classA obj = new classA()
//  ^^^^^^^^
}


public class test2 extends test1 {
    public void test() {

        // now you can access obj in test2
    }
}

您授予了默認訪問權限,而我在默認程序包中都看到了它們,因此您應該可以使用相同的訪問權限。 如果在不同的包中定義它們,則應在Parent類中公開getter方法,例如:

public classA getClassA() {
    return obj1;
}

或者,您可以將該字段標記為受保護,如下所示:

protected classA obj = new classA()

您可能需要從分配給同一軟件包的兩個單獨的文件中運行這些文件。 文件1名為test1.java

package TestStuff;
import java.util.List;
public class test1 {
     List <String> newStringList;
}

文件2名為test2.java

package TestStuff; #same package at test1.java
public class test2 extends test1 {
    public void test(){
        String d = "dog";
        for (int i = 0; i < d.length(); i++){
            newStringList.add(d);
        }
    }
}

現在,我可以訪問在test1.java創建的對象,就好像該對象已在當前類中定義。

暫無
暫無

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

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