如何在Child类中使用Parent类中创建的对象?

时间:2014-11-17 12:06:19

标签: java inheritance

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


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

        //unable to access object 'obj'
    }
}

从子类中,我无法访问在父类中创建的对象。

4 个答案:

答案 0 :(得分:3)

您尚未为obj类的test1成员指定任何访问修饰符,这使其默认情况下包为私有。因此,只有当test2子类与test1位于同一个包中时,它才能访问它。如果您将其更改为protected classA obj = new classA();,则无论在哪个包test2中找到,您都可以访问它。

尽管如此,最好将所有成员定义为私有成员,并通过accesssor方法访问它们。

答案 1 :(得分:1)

要允许派生类访问父成员,您需要指定protectedpublic

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中创建的对象,就像它已经在我当前的类中定义一样。