Junior
Как работает модификатор доступа protected в языках программирования?
sobes.tech MI
Válasz az MI-től
A protected hozzáférés módosító meghatározza az osztály tagjainak (mezők, metódusok) láthatósági szintjét. A hozzáférés korlátozott:
- Osztályon belül: A hozzáférés engedélyezett. A
protectedtagok bárhonnan láthatók az osztályon belül. - Öröklődő osztályokban: A hozzáférés engedélyezett. Azok az osztályok, amelyek öröklik egy
protectedtagokkal rendelkező osztálytól, közvetlenül hozzáférhetnek ezekhez a tagokhoz, még akkor is, ha más csomagban vannak (egyes nyelveken, például Java). - Ugyanazon csomagban (egyes nyelveken, például Java): A hozzáférés engedélyezett, egyenértékű a
default(csomag-privát) hozzáféréssel. Aprotectedtagok láthatók minden osztály számára ugyanabban a csomagban, függetlenül az örökléstől. - Kívülről (más csomagok, nem öröklődő osztályok): A hozzáférés tiltott. A
protectedtagokhoz való közvetlen hozzáférés nem lehetséges olyan osztályokból, amelyek nem öröklik vagy nem ugyanabban a csomagban vannak (Java).
Példa (Java):
class BaseClass {
protected int protectedMember = 10;
protected void protectedMethod() {
// Osztályon belüli hozzáférés engedélyezett
System.out.println("BaseClass védett metódusa");
}
}
class DerivedClass extends BaseClass {
void accessProtected() {
// Öröklődő osztályból való hozzáférés engedélyezett
System.out.println(protectedMember);
protectedMethod();
}
}
class SamePackageClass {
void accessProtected(BaseClass obj) {
// Java-ban ugyanazon csomagban lévő másik osztályból való hozzáférés engedélyezett
System.out.println(obj.protectedMember);
obj.protectedMethod();
}
}
class DifferentPackageClass {
// ...
// A hozzáférési kísérlet fordítási hibát fog okozni
// obj.protectedMember;
// obj.protectedMethod();
}
Így a protected magasabb szintű enkapszulációt biztosít, mint a public, de alacsonyabbat, mint a private vagy a default, lehetővé téve az osztálytagok hozzáférését öröklődéssel és bizonyos nyelveken ugyanabban a csomagban lévő osztályok számára.