Назад к вопросам
Junior
72
questionbank
Расскажи о модификаторах доступа в Java.
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
В Java есть четыре модификатора доступа:
publicДоступен из любого места в любом пакете.protectedДоступен в том же пакете и из подклассов в других пакетах.- default (отсутствие модификатора) Доступен только в том же пакете.
privateДоступен только внутри того же класса.
<br/>
Пример:
package package1;
public class ClassA {
public int publicField;
protected int protectedField;
int defaultField; // default access
private int privateField;
public void publicMethod() {}
protected void protectedMethod() {}
void defaultMethod() {} // default access
private void privateMethod() {}
}
package package1;
public class ClassB {
public void accessMethods(ClassA obj) {
obj.publicMethod();
obj.protectedMethod();
obj.defaultMethod();
// obj.privateMethod(); // Error: private access
}
}
package package2;
import package1.ClassA;
public class ClassC extends ClassA {
public void accessMethods() {
publicMethod(); // inherited public method
protectedMethod(); // inherited protected method
// defaultMethod(); // Error: default access from another package
// privateMethod(); // Error: private access (not inherited)
}
}
package package2;
import package1.ClassA;
public class ClassD {
public void accessMethods(ClassA obj) {
obj.publicMethod();
// obj.protectedMethod(); // Error: protected access from another package (not a subclass)
// obj.defaultMethod(); // Error: default access from another package
// obj.privateMethod(); // Error: private access
}
}
<br/>
Таблица видимости:
| Модификатор | Из того же класса | Из того же пакета | Из подкласса (другой пакет) | Из любого места |
|---|---|---|---|---|
private |
Да | Нет | Нет | Нет |
| default | Да | Да | Нет | Нет |
protected |
Да | Да | Да | Нет |
public |
Да | Да | Да | Да |