Sobes.tech
Junior

Как работи модификаторът за достъп 'protected' в програмните езици?

sobes.tech AI

Отговор от AI

Модификаторът за достъп protected предоставя достъп до член на класа (поле, метод или свойство) от:

  • Самия клас, в който е обявен този член.
  • Наследени класове (подкласове).
  • В някои езици (например Java) - от всички класове в рамките на същия пакет.

Приложимост по езици:

  • Java: Достъпен в рамките на пакета и в наследяващите класове от всеки пакет.
  • C#: Достъпен в рамките на класа и в наследяващите класове. Съществува и комбинацията protected internal, която предоставя достъп в рамките на асембли и в наследяващи класове (включително в класове в други асембли).
  • C++: Достъпен в рамките на класа и в наследяващите класове.
  • Python: Няма строг protected. Членовете, предназначени за защита, обикновено се именуват с подчертаване (_) в началото, което е конвенция, а не строга ограничение за достъп.

Пример (Java):

class Parent {
    protected int protectedField;

    protected void protectedMethod() {
        // ...
    }
}

class Child extends Parent {
    public void accessProtected() {
        this.protectedField = 10; // Достъп от наследяващия клас
        this.protectedMethod(); // Достъп от наследяващия клас
    }
}

class AnotherClassInSamePackage {
    public void accessProtected(Parent p) {
        p.protectedField = 20; // Достъп от същия пакет
        p.protectedMethod();   // Достъп от същия пакет
    }
}

class AnotherClassInDifferentPackage {
    // Не притежава директен достъп до protected членове
    // освен ако не е подклас
}

protected се използва широко за реализиране на наследяване, позволявайки на подкласовете да разширяват функционалността на родителския клас, като същевременно скриват вътрешните детайли на взаимодействието им отвън.