Назад к вопросам
Ростелеком
Junior — Middle
87
Какое отличие между модификаторами доступа package-private и protected в Java?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
В Java модификаторы доступа package-private (отсутствие явного модификатора) и protected отличаются областью видимости:
-
package-private (дефолтный, когда модификатор не указан):
- Доступен только внутри того же пакета.
- Классы из других пакетов не видят этот член.
-
protected:
- Доступен внутри того же пакета (как package-private).
- Дополнительно доступен в подклассах, даже если они находятся в других пакетах.
Таким образом, protected расширяет область видимости по сравнению с package-private, позволяя наследникам из других пакетов обращаться к защищённым членам класса.
Пример:
package pkg1;
public class A {
int packagePrivateVar; // package-private
protected int protectedVar;
}
package pkg2;
import pkg1.A;
public class B extends A {
void method() {
// packagePrivateVar недоступен, так как B в другом пакете
// protectedVar доступен, так как B наследник A
int x = protectedVar;
}
}