Junior
Как работает модификатор доступа protected в языках программирования?
sobes.tech AI
Antwoord van AI
De toegangsmodule protected bepaalt het zichtbaarheidniveau van de leden van de klasse (velden, methoden). Toegang tot hen is beperkt:
- Binnen de klasse: Toegang is toegestaan.
protected-leden zijn zichtbaar vanaf elke plek binnen hun klasse. - In afgeleide klassen: Toegang is toegestaan. Klassen die erven van een klasse met
protected-leden kunnen direct toegang krijgen tot deze leden, zelfs als ze zich in een ander pakket bevinden (in sommige talen, bijvoorbeeld Java). - Binnen hetzelfde pakket (in sommige talen, bijvoorbeeld Java): Toegang is toegestaan, gelijk aan
default(package-private).protected-leden zijn zichtbaar voor alle klassen in hetzelfde pakket, ongeacht erfelijkheid. - Van buitenaf (andere pakketten, niet-erfende klassen): Toegang is verboden. Directe toegang tot
protected-leden vanuit klassen die niet erven of niet in hetzelfde pakket zitten (Java) is niet mogelijk.
Voorbeeld (Java):
class BaseClass {
protected int protectedMember = 10;
protected void protectedMethod() {
// Toegang binnen de klasse is toegestaan
System.out.println("Protected methode van BaseClass");
}
}
class DerivedClass extends BaseClass {
void accessProtected() {
// Toegang vanuit een afgeleide klasse is toegestaan
System.out.println(protectedMember);
protectedMethod();
}
}
class SamePackageClass {
void accessProtected(BaseClass obj) {
// In Java is toegang vanuit een andere klasse in hetzelfde pakket toegestaan
System.out.println(obj.protectedMember);
obj.protectedMethod();
}
}
class DifferentPackageClass {
// ...
// Poging tot toegang zal een compilatiefout veroorzaken
// obj.protectedMember;
// obj.protectedMethod();
}
Dus, protected biedt een hoger niveau van encapsulatie dan public, maar lager dan private of default, waardoor klasseleden toegankelijk zijn voor afgeleiden en, in sommige talen, voor klassen in hetzelfde pakket.