Проблема доступа к защищенному полю Java в подклассеJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Проблема доступа к защищенному полю Java в подклассе

Сообщение Anonymous »

В чем разница между общедоступным, защищенным, частным и частным в Java?
Ответ на вопрос не может ответить на мой вопрос. Это не повторяющийся вопрос.
Я полностью знаю схему модификатора доступа. Я процитировал документ Java: модификатор protected указывает, что доступ к члену возможен только внутри его собственного пакета (как в случае с package-private) и, кроме того, для подкласса его класса в другом пакете.Однако он не может ответить на мой следующий вопрос:
У меня есть проект Java со следующей файловой структурой:

Код: Выделить всё

src
└── A
├── P1.java

└── P2.java
находится внутри пакета A, а P2.java находится на том же уровне, что и A.
Вот код для P1 .java:

Код: Выделить всё

package A;

public class P1 {
public int a1;
protected int a2;
}
А вот код для P2.java:

Код: Выделить всё

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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»