Ответ на вопрос не может ответить на мой вопрос. Это не повторяющийся вопрос. Я полностью знаю схему модификатора доступа. Я процитировал документ Java: модификатор protected указывает, что доступ к члену возможен только внутри его собственного пакета (как в случае с package-private) и, кроме того, для подкласса его класса в другом пакете.Однако он не может ответить на мой следующий вопрос:
У меня есть проект Java со следующей файловой структурой:
Код: Выделить всё
src
└── A
├── P1.java
└── P2.java
Код: Выделить всё
P1.javaВот код для P1 .java:
Код: Выделить всё
package A;
public class P1 {
public int a1;
protected int a2;
}
Код: Выделить всё
import A.P1;
public class P2 extends P1 {
public static void main(String[] args) {
P1 p = new P1();
System.out.println(p.a1);
System.out.println(p.a2); // error?
}
}
Код: Выделить всё
java: a2 has protected access in A.P1
Почему это происходит? Поскольку P2 является подклассом P1, он должен иметь доступ к a2.
Подробнее здесь: https://stackoverflow.com/questions/786 ... n-subclass
Мобильная версия