В своей книге Герберт Шильдт говорит на стр. 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);
}
}
Хорошо, что переменную pro можно получить из производного класса Class2. Но как можно получить доступ из не производного класса Class3 через ссылку на объект класса 1? Это противоречит утверждению на стр. 172. Если это так, то я не вижу разницы между публичными и защищенными спецификаторами в этой ситуации.