Junior
Как работает модификатор доступа protected в языках программирования?
sobes.tech AI
Răspuns de la AI
Modificatorul de acces protected determină nivelul de vizibilitate al membrilor clasei (câmpuri, metode). Accesul la aceștia este restricționat:
- În interiorul clasei: Accesul este permis. Membrii
protectedsunt vizibili din orice loc în interiorul clasei lor. - În clasele moștenitoare: Accesul este permis. Clasele care moștenesc de la o clasă cu membri
protectedpot accesa direct acești membri, chiar dacă se află într-un alt pachet (în unele limbaje, de exemplu Java). - În același pachet (în unele limbaje, de exemplu Java): Accesul este permis, echivalent cu
default(package-private). Membriiprotectedsunt vizibili pentru toate clasele din același pachet, indiferent de moștenire. - Din exterior (alte pachete, clase care nu moștenesc): Accesul este interzis. Nu este posibilă accesarea directă a membrilor
protecteddin clase care nu moștenesc sau care nu se află în același pachet (Java).
Exemplu (Java):
class BaseClass {
protected int protectedMember = 10;
protected void protectedMethod() {
// Accesul din interiorul clasei este permis
System.out.println("Metodă protejată din BaseClass");
}
}
class DerivedClass extends BaseClass {
void accessProtected() {
// Accesul din clasa moștenitoare este permis
System.out.println(protectedMember);
protectedMethod();
}
}
class SamePackageClass {
void accessProtected(BaseClass obj) {
// În Java, accesul dintr-o altă clasă din același pachet este permis
System.out.println(obj.protectedMember);
obj.protectedMethod();
}
}
class DifferentPackageClass {
// ...
// Tentativa de acces va fi o eroare de compilare
// obj.protectedMember;
// obj.protectedMethod();
}
Astfel, protected asigură un nivel mai înalt de încapsulare decât public, dar mai scăzut decât private sau default, făcând membrii clasei accesibili pentru moștenitori și, în unele limbaje, pentru clase din același pachet.