Учебник по ООП в Java 27
Основы ООП
Введение
Классы и объекты
Поля класса
Методы класса
Параметры методов
Обращение через this
Конструктор
Инициализация полей через конструктор
Значения полей по умолчанию
Несколько конструкторов
Модификатор private
Приватные поля
Приватные методы
Геттеры
Сеттеры
Практика
Объекты в коде
Массив объектов
Список объектов
Карта объектов
Объект как поле другого объекта
Цепочки вызовов
Пустые ссылки в полях
Проверка объекта на null
Сравнение ссылок через ==
Передача объекта в метод
Возврат объекта из метода
Копирование ссылок
Практика
Наследование
Введение
Родительский класс
Методы родителя
Методы потомка
Переопределение методов
Аннотация @Override
Вызов super
Конструктор при наследовании
Поля при наследовании
Приватность при наследовании
Защищенный доступ
Запрет наследования класса
Запрет переопределения метода
Проверка типа через instanceof
Pattern matching в instanceof
Приведение типа
Практика
Класс Object
Введение
Общий родитель всех классов
Строковое представление
Переопределение toString
Сравнение через equals
Сравнение через equals
Хеш-код объекта
Связь equals и hashCode
Практика
Абстрактные классы
Введение
Абстрактный класс
Абстрактные методы
Обычные методы в абстрактном классе
Поля в абстрактном классе
Конструктор абстрактного класса
Наследование от абстрактного класса
Практика
Интерфейсы
Введение
Создание интерфейса
Реализация интерфейса
Методы интерфейса
Константы интерфейса
Методы с телом
Статические методы интерфейса
Несколько интерфейсов
Наследование интерфейсов
Класс и интерфейс вместе
Проверка интерфейса через instanceof
Практика
Records
Введение
Создание record
Компоненты record
Автоматические методы доступа
Автоматический toString
Автоматический equals
Автоматический hashCode
Компактный конструктор
Обычный конструктор
Методы в record
Статические поля и методы
Список records
Карта records
Практика
Перечисление и sealed
Введение
Перечисление
Перечисление в switch
Поля enum
Конструктор enum
Методы enum
values
valueOf
Sealed class
Sealed interface
permits
Sealed-типы в switch
Варианты sealed-типа через records
Практика
Static и вложенные классы
Введение
Статические поля
Статические методы
Константы
Статический блок
Фабричный метод
Единственный объект
Статический вложенный класс
Внутренний класс
Локальный класс
Анонимный класс
Практика
Пакеты и импорты
Введение
Объявление package
Папки и пакеты
Импорт класса
Несколько импортов
Импорт со звездочкой
Статический импорт
Публичные классы
Классы без public
Один публичный класс в файле
Практика
Композиция объектов
Введение
Объект как часть другого объекта
Передача объекта в конструктор
Хранение зависимости в поле
Вызов методов вложенного объекта
Делегирование работы другому объекту
Композиция вместо наследования
Композиция через интерфейс
Подмена реализации через интерфейс
Практика