Sobes.tech
Junior

Jak funguje modifikátor přístupu 'protected' v programovacích jazycích?

sobes.tech AI

Odpověď od AI

Modifikátor přístupu protected umožňuje přístup k členu třídy (políčko, metoda nebo vlastnost) z:

  • Samotné třídy, kde je tento člen deklarován.
  • Dědických tříd (potomků).
  • V některých jazycích (například Java) - ze všech tříd uvnitř stejného balíčku.

Použitelnost podle jazyků:

  • Java: Dostupné v rámci balíčku a v dědických třídách jakéhokoliv balíčku.
  • C#: Dostupné v rámci třídy a v dědických třídách. Existuje také kombinace protected internal, která umožňuje přístup v rámci sestavení a v dědických třídách (včetně tříd v jiných sestaveních).
  • C++: Dostupné v rámci třídy a v dědických třídách.
  • Python: Nemá přísné protected. Členové určení k ochraně jsou obvykle pojmenováni s podtržítkem (_) na začátku, což je konvence a nikoliv přísné omezení přístupu.

Příklad (Java):

class Parent {
    protected int protectedField;

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

class Child extends Parent {
    public void accessProtected() {
        this.protectedField = 10; // Přístup z dědické třídy
        this.protectedMethod(); // Přístup z dědické třídy
    }
}

class AnotherClassInSamePackage {
    public void accessProtected(Parent p) {
        p.protectedField = 20; // Přístup ze stejného balíčku
        p.protectedMethod();   // Přístup ze stejného balíčku
    }
}

class AnotherClassInDifferentPackage {
    // Nemá přímý přístup k protected členům
    // pokud není podtřídou
}

protected je široce používán pro implementaci dědičnosti, umožňuje podtřídám rozšiřovat funkčnost rodičovské třídy, zatímco skrývá vnitřní detaily jejich interakce před vnějším světem.