Sobes.tech
Junior — Middle

Каква е разликата между пакетно-частния и protected модификатори за достъп в Java?

sobes.tech AI

Отговор от 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;
    }
}