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.