Назад к вопросам
Junior
72
questionbank

Расскажи о модификаторах доступа в Java.

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

В Java есть четыре модификатора доступа:

  1. public Доступен из любого места в любом пакете.
  2. protected Доступен в том же пакете и из подклассов в других пакетах.
  3. default (отсутствие модификатора) Доступен только в том же пакете.
  4. 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 Да Да Да Да