public class test1
{
classA obj = new classA()
}
public class test2 extends test1
{
public void test() {
//unable to access object 'obj'
}
}
从子类中,我无法访问在父类中创建的对象。
答案 0 :(得分:3)
您尚未为obj
类的test1
成员指定任何访问修饰符,这使其默认情况下包为私有。因此,只有当test2
子类与test1
位于同一个包中时,它才能访问它。如果您将其更改为protected classA obj = new classA();
,则无论在哪个包test2
中找到,您都可以访问它。
尽管如此,最好将所有成员定义为私有成员,并通过accesssor方法访问它们。
答案 1 :(得分:1)
要允许派生类访问父成员,您需要指定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
}
}
答案 2 :(得分:0)
您提供了默认访问权限,我在默认包中都看到了它们,因此您应该可以访问相同的权限。如果您在不同的包中定义它们,那么您应该在Parent类中公开getter方法,如:
public classA getClassA() {
return obj1;
}
或者您可以将该字段标记为受保护,如下所示:
protected classA obj = new classA()
答案 3 :(得分:0)
您可能需要从分配给同一个包的两个单独文件中运行这些文件。
文件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
中创建的对象,就像它已经在我当前的类中定义一样。