【发布时间】:2015-11-23 19:53:42
【问题描述】:
在他的书中,Herbert Schildt 在第 172 页(第 3 段)中说“protected 仅在涉及继承时才适用。”。
在第 228 页中,表 9-1 显示可以从同一包中的非子类访问受保护的成员。
以下代码有效并支持表 9-1 中的信息。
Class1.java:
package Mypack;
public class Class1
{
protected pro=1;
public Class1()
{
System.out.println(pro);
}
}
Class2.java
package Mypack;
class Class2 extends Class1
{
Class2()
{
System.out.println(pro);
}
}
Class3.java
package Mypack;
class Class3
{
Class3()
{
Class1 class1=new Class1();
System.out.println(class1.pro);
}
}
可以从派生类Class2中访问变量pro。但是如何通过对 Class1 对象的引用从非派生类 Class3 访问它呢?它与第 172 页上的陈述相矛盾。如果是这样,那么我发现在这种情况下 public 和 protected 说明符之间没有区别。
【问题讨论】:
-
Herbert Schildt 的书通常不是那么好,而且充满了不准确之处。