Инкапсуляция
Объединение данных и кода для их обработки в единую структуру - класс, с реализацией контроля доступа к внутренним элементам класса через строго определенный интерфейс взаимодействия
Подробнее про модификаторы доступа
Внешние классы могут быть только public и default, в отличие от вложенных
Публичные и приватные поля и методы
Внутреннее закрытое состояние:
- детали реализации не имеют значения для внешних пользователей класса
- реализация можно менять как угодно, пока не затронут внешний интерфейс
Внешний открытый интерфейс:
- фиксируется в начале разработки и далее не должен меняться
- обеспечивает внешним пользователям возможность управлять объектами класса в контролируемых пределах
Getter/Setter
Стандартная практика - поля private, методы - public
Геттер может выводить значение в определенном формате
Сеттер может валидировать данные
Подробнее про конструкторы