Sobes.tech
Junior

Ako funguje modifikátor prístupu 'protected' v programovacích jazykoch?

sobes.tech AI

Odpoveď od AI

Prístupový modifikátor protected umožňuje prístup k členovi triedy (pole, metóda alebo vlastnosť) z:

  • Samej triedy, v ktorej je tento člen deklarovaný.
  • Podtried (potomkov).
  • V niektorých jazykoch (napríklad Java) - zo všetkých tried v rámci toho istého balíka.

Použiteľnosť podľa jazykov:

  • Java: Dostupné v rámci balíka a v podtriedach z akéhokoľvek balíka.
  • C#: Dostupné v rámci triedy a v podtriedach. Existuje aj kombinácia protected internal, ktorá umožňuje prístup v rámci zostavy a v podtriedach (vrátane tried v iných zostavách).
  • C++: Dostupné v rámci triedy a v podtriedach.
  • Python: Nemá prísne protected. Členovia určení na ochranu sa zvyčajne pomenúvajú s podtržítkom (_) na začiatku, čo je konvencia a nie prísne obmedzenie prístupu.

Príklad (Java):

class Parent {
    protected int protectedField;

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

class Child extends Parent {
    public void accessProtected() {
        this.protectedField = 10; // Prístup z podtriedy
        this.protectedMethod(); // Prístup z podtriedy
    }
}

class AnotherClassInSamePackage {
    public void accessProtected(Parent p) {
        p.protectedField = 20; // Prístup z toho istého balíka
        p.protectedMethod();   // Prístup z toho istého balíka
    }
}

class AnotherClassInDifferentPackage {
    // Nemá priamy prístup k protected členom
    // pokiaľ nie je podtriedou
}

protected sa široko používa na implementáciu dedičnosti, umožňujúc podtriedam rozširovať funkčnosť rodičovskej triedy, pričom skrýva vnútorné detaily ich interakcie od vonkajšieho sveta.