早上好
我正在学习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);
}
}
问题是我收到编译时错误,向我解释无法找到符号。 但在我的理解中,该类可以查看与另一个类相同的包中的受保护和默认成员。
此致 阿里安
答案 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)
op
是OtherPerson
对象,没有age
属性。但是,Parent
班有一个年龄属性。用OtherPerson op = new OtherPerson();
替换Parent op = new Parent();
应该有效。
答案 4 :(得分:1)
一个类的成员(无论是私有的,公共的,受保护的还是默认的)Never
对其他类可见。永远不会......那将是一匹夜魇。当一个类继承其他类时,访问其他成员和其他成员的可见性。所以要么你需要扩展类,要么实现父子关系。然后你说的是真的
是的,我居住的地方,此时Good Evening
就在这里:)