Files
obsidian/Программирование на Java/ООП/Наследование/Наследование.md
T
roma-dxunvrs 4fabe16272 04.09
2026-09-04 22:55:43 +03:00

3.1 KiB

Создание новых классов на основе существующих с сохранением или расширением функциональности. При этом реализуется иерархия классов, связанных отношением "is-a". Наследуются:

  • поля и методы с модификаторами public и protected
  • поля и методы без модификатора доступа, если подкласс и суперкласс в одном пакете Не наследуются:
  • поля и методы с модификатором private (не доступны)
  • Конструкторы
  • Блоки инициализации Если имя поля в подклассе и в суперклассе одинаковое
  • Поле подкласса скрывает поле суперкласса
  • Статическое поле суперкласса доступно по имени класса BaseClass.staticField
  • Нестатическое поле суперкласса доступно с помощью super: super.instanceField
  • Скрытое поле может иметь другой тип Если сигнатура (имя и параметры) статического метода в подклассе и в суперклассе одинаковая
  • Статический метод подкласса скрывает метод суперкласса
  • Статический метод суперкласса доступен по имени класса BaseClass.staticMethod() Если сигнатура (имя и параметры) нестатического метода в подклассе и в суперклассе одинаковая
  • Метод подкласса переопределяет метод суперкласса
  • Метод суперкласса доступен с помощью super: super.instanceMethod()
  • Доступ к переопределенному методу нельзя уменьшать
    • Если в суперклассе public - в подклассе тоже public
    • Если в суперклассе protected - в подклассе protected или public

Если коротко:

  • Поля - сокрытие (+ компилятор смотрит на тип ссылки)
  • Статик методы - сокрытие (+ компилятор смотрит на тип ссылки)
  • Нон-статик методы - переопределение
  • Статик на нон-статик и наоборот у методов - нельзя
  • Статик на нон-статик и наоборот у полей - можно

Ключевое слово extends, множественное наследование запрещено (это решают Интерфейсы) Подробнее про Сокрытие и Переопределение Основа всего - Класс Object