Junior
Как работает модификатор доступа protected в языках программирования?
sobes.tech AI
Odpoveď od AI
Prístupový modifikátor protected určuje úroveň viditeľnosti členov triedy (polí, metód). Prístup k nim je obmedzený:
- Vnútri triedy: Prístup je povolený. Členovia
protectedsú viditeľní odkiaľkoľvek vnútri svojej triedy. - V odvodzujúcich triedach: Prístup je povolený. Triedy, ktoré dedičia od triedy s členmi
protected, môžu priamo pristupovať k týmto členom, aj keď sú v inom balíku (v niektorých jazykoch, napríklad Java). - V rámci toho istého balíka (v niektorých jazykoch, napríklad Java): Prístup je povolený, ekvivalentne s
default(package-private). Členoviaprotectedsú viditeľní pre všetky triedy v tom istom balíku, bez ohľadu na dedičstvo. - Z vonku (iné balíky, triedy, ktoré nededia): Prístup je zakázaný. Priamy prístup k členom
protectedz tried, ktoré nededia alebo nie sú v tom istom balíku (Java), nie je možný.
Príklad (Java):
class BaseClass {
protected int protectedMember = 10;
protected void protectedMethod() {
// Prístup z vnútra triedy je povolený
System.out.println("Chránená metóda z BaseClass");
}
}
class DerivedClass extends BaseClass {
void accessProtected() {
// Prístup z odvodzujúcej triedy je povolený
System.out.println(protectedMember);
protectedMethod();
}
}
class SamePackageClass {
void accessProtected(BaseClass obj) {
// V Jave, prístup z inej triedy v tom istom balíku je povolený
System.out.println(obj.protectedMember);
obj.protectedMethod();
}
}
class DifferentPackageClass {
// ...
// Pokus o prístup spôsobí chybu kompilácie
// obj.protectedMember;
// obj.protectedMethod();
}
Takto protected zabezpečuje vyššiu úroveň enkapsulácie než public, ale nižšiu než private alebo default, čím robí členov triedy dostupnými pre dedičov a, v niektorých jazykoch, pre triedy v tom istom balíku.