Junior — Middle
Каква е разликата между пакетно-частния и protected модификатори за достъп в Java?
sobes.tech AI
Отговор от AI
В Java модификаторите за достъп package-private (липса на явен модификатор) и protected се различават по областта си на видимост:
-
package-private (по подразбиране, когато не е указан модификатор):
- Достъпен само вътре в същия пакет.
- Класовете от други пакети не виждат този член.
-
protected:
- Достъпен вътре в същия пакет (като package-private).
- Освен това, достъпен е в подкласове, дори ако са в други пакети.
Така protected разширява областта на видимост в сравнение с package-private, позволявайки на наследниците от други пакети да имат достъп до защитените членове на класа.
Пример:
package pkg1;
public class A {
int packagePrivateVar; // package-private
protected int protectedVar;
}
package pkg2;
import pkg1.A;
public class B extends A {
void method() {
// packagePrivateVar не е достъпен, тъй като B е в друг пакет
// protectedVar е достъпен, тъй като B наследява от A
int x = protectedVar;
}
}