试图了解包中的访问者

时间:2011-11-23 09:27:23

标签: java

早上好

我正在学习Java并尝试理解对包内的类成员的访问。 我必须在MemberAccess目录中的文件并调用包unitOne.MemberAccess(是吗?)

这是一个简单的例子。

package unitOne.MemberAccess;

public class Parent 
{
    private String secret = "This is my secret"; 
    protected String inherit = "All my money";

    int age = 100; 

    public void singInShower()
    {
        System.out.println("la-di-da");
    }
}   

new我在同一个名为OtherPerson的包中创建了一个单独的文件。

package unitOne.MemberAccess;

class OtherPerson
{


    public static void main(String[]args)
    {
        OtherPerson op = new OtherPerson();
        System.out.println(op.inherit);
        System.out.println(op.age);
    }   

}

问题是我收到编译时错误,向我解释无法找到符号。 但在我的理解中,该类可以查看与另一个类相同的包中的受保护和默认成员。

此致 阿里安

5 个答案:

答案 0 :(得分:3)

 OtherPerson op = new OtherPerson();

op OtherPerson 类型的实例。 OtherPerson Parent 类没有任何关系,因此op不能用于访问 Parent 类成员。

答案 1 :(得分:2)

您需要在Otherperson类中创建Parent类的对象。

因此,您需要编写Parent op = new Parent()而不是OtherPerson op = new OtherPerson();

答案 2 :(得分:1)

您的OtherPerson没有继承您的Parent

尝试用class OtherPerson extends Parent替换OtherPerson.java的第二行。

答案 3 :(得分:1)

opOtherPerson对象,没有age属性。但是,Parent班有一个年龄属性。用OtherPerson op = new OtherPerson();替换Parent op = new Parent();应该有效。

答案 4 :(得分:1)

一个类的成员(无论是私有的,公共的,受保护的还是默认的)Never对其他类可见。永远不会......那将是一匹夜魇。当一个类继承其他类时,访问其他成员和其他成员的可见性。所以要么你需要扩展类,要么实现父子关系。然后你说的是真的

是的,我居住的地方,此时Good Evening就在这里:)