Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Справочник Java

public / protected / private

Модификаторы доступа задают, откуда виден класс, поле, метод или конструктор.

Доступно с: Java 1.0

Синтаксис

public | protected | private | (no modifier) — package-private

Примеры

Типичная инкапсуляция: поле закрыто, работа с ним — через открытые методы:

class Account {
    private int balance;
 
    public void deposit(int amount) {
        if (amount <= 0) {
            throw new IllegalArgumentException("amount must be positive");
        }
        balance += amount;
    }
 
    public int getBalance() {
        return balance;
    }
}
 
void main() {
    Account account = new Account();
    account.deposit(100);
    IO.println(account.getBalance());
}

Результат:

100

Обращение к закрытому полю из другого класса верхнего уровня не компилируется:

// src/Shop.java
public class Shop {
    void pay(Account account) {
        account.balance = 1_000_000; // error: balance has private access in Account
    }
}

Примечания

Видимость от узкой к широкой:

МодификаторКлассПакетНаследникиВезде
privateданетнетнет
без модификаторададанетнет
protectedдададанет
publicдададада

Поля почти всегда делают private, а наружу открывают только нужные методы. Класс верхнего уровня может быть только public или без модификатора, и public-класс должен лежать в файле со своим именем. В компактном файле все классы вложены в один неявный класс, поэтому private между ними не действует — проверяйте доступ на обычных файлах.

См. также

  • import / package — package задаёт пакет файла, import позволяет писать короткие имена классов из других пакетов.
  • class — Объявляет класс — описание объектов: их полей и методов.
  • extends — Объявляет наследование: класс получает поля и методы родителя.
  • static — Делает поле или метод общим для всего класса, а не для отдельного объекта.

В учебнике

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.