Создание новых классов на основе существующих с сохранением или расширением функциональности. При этом реализуется иерархия классов, связанных отношением "is-a". Наследуются: - поля и методы с модификаторами public и protected - поля и методы без модификатора доступа, если подкласс и суперкласс в одном пакете Не наследуются: - поля и методы с модификатором private (не доступны) - [конструкторы](../Конструкторы.md) - [блоки инициализации](../Блоки%20инициализации.md) Если имя поля в подклассе и в суперклассе одинаковое - Поле подкласса скрывает поле суперкласса - Статическое поле суперкласса доступно по имени класса `BaseClass.staticField` - Нестатическое поле суперкласса доступно с помощью super: `super.instanceField` - Скрытое поле может иметь другой тип Если сигнатура (имя и параметры) статического метода в подклассе и в суперклассе одинаковая - Статический метод подкласса скрывает метод суперкласса - Статический метод суперкласса доступен по имени класса `BaseClass.staticMethod()` Если сигнатура (имя и параметры) нестатического метода в подклассе и в суперклассе одинаковая - Метод подкласса переопределяет метод суперкласса - Метод суперкласса доступен с помощью super: `super.instanceMethod()` - Доступ к переопределенному методу нельзя уменьшать - Если в суперклассе public - в подклассе тоже public - Если в суперклассе protected - в подклассе protected или public Если коротко: - Поля - сокрытие (+ компилятор смотрит на тип ссылки) - Статик методы - сокрытие (+ компилятор смотрит на тип ссылки) - Нон-статик методы - переопределение - Статик на нон-статик и наоборот у методов - нельзя - Статик на нон-статик и наоборот у полей - можно Ключевое слово `extends`, множественное наследование запрещено (это решают [Интерфейсы](../Интерфейсы.md)) Подробнее про [Сокрытие](Сокрытие.md) и [Переопределение](Переопределение.md) Основа всего - [Класс Object](../../Синтаксис%20и%20типы/Базовые%20типы%20ООП/Класс%20Object.md)