![](/img/trans.png)
[英]Is their a way to have the child class use the variables created in the parent class?
[英]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方法授予對它們的訪問權限。
要允許派生類訪問父成員,您需要指定protected
或public
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.