Sobes.tech
Назад к вопросам
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;
    }
}