Junior
Как работает модификатор доступа protected в языках программирования?
sobes.tech AI
Odpověď od AI
Modifikátor přístupu protected určuje úroveň viditelnosti členů třídy (polí, metod). Přístup k nim je omezen:
- Uvnitř třídy: Přístup je povolen. Členové
protectedjsou viditelní odkudkoli uvnitř své třídy. - V odvozených třídách: Přístup je povolen. Třídy, které dědí od třídy s členy
protected, mohou přímo přistupovat k těmto členům, i když jsou v jiném balíčku (v některých jazycích, například Java). - Uvnitř stejného balíčku (v některých jazycích, například Java): Přístup je povolen, ekvivalentní
default(package-private). Členovéprotectedjsou viditelní ve všech třídách ve stejném balíčku, bez ohledu na dědičnost. - Zvenčí (jiné balíčky, třídy, které nedědí): Přístup je zakázán. Přímý přístup k členům
protectedz tříd, které nedědí nebo nejsou ve stejném balíčku (Java), není možný.
Příklad (Java):
class BaseClass {
protected int protectedMember = 10;
protected void protectedMethod() {
// Přístup z vnitřku třídy je povolen
System.out.println("Chráněná metoda z BaseClass");
}
}
class DerivedClass extends BaseClass {
void accessProtected() {
// Přístup z odvozené třídy je povolen
System.out.println(protectedMember);
protectedMethod();
}
}
class SamePackageClass {
void accessProtected(BaseClass obj) {
// V Javě je přístup z jiné třídy ve stejném balíčku povolen
System.out.println(obj.protectedMember);
obj.protectedMethod();
}
}
class DifferentPackageClass {
// ...
// Pokus o přístup způsobí kompilátorovou chybu
// obj.protectedMember;
// obj.protectedMethod();
}
Tímto způsobem protected zajišťuje vyšší úroveň zapouzdření než public, ale nižší než private nebo default, čímž činí členy třídy dostupnými pro dědické třídy a v některých jazycích i pro třídy ve stejném balíčku.