Наследование — это отношение между классами, при котором один класс расширяет функциональность другого. Это значит, что он автоматически перенимает все его поля и методы, а также добавляет некоторые свои.
Наследование обычно возникает, когда все объекты одного класса одновременно являются объектами другого класса (отношение общее/частное). Например, все объекты класса Студент
являются объектами класса Человек
. В этом случае говорят, что класс Студент
наследует от класса Человек
. Аналогично класс Собака
может наследовать от классаЖивотное
, а класс Далматинец
от класса Собака
. Класс, который наследует, называется подклассом или потомком, а класс, от которого наследуют, называется суперклассом или предком.
Заметим, что если класс №2 является потомком класса №1, а класс №3 является потомком класса №2, то класс №3 является также потомком класса №1.
Наследование избавляет программиста от лишней работы. Например, если в программе необходимо ввести новый классДалматинец
, его можно создать на основе уже существующего класса Собака
, не программируя заново все поля и методы, а лишь добавив те, которых не хватало в суперклассе.
Для того, чтобы один класс был потомком другого, необходимо при его объявлении после имени класса указать ключевое слово extends и название суперкласса.
Например:
class Dalmatian extends Dog
// дополнительные поля и методы
...
Если ключевое слово extends не указано, считается, что класс унаследован от универсального класса Object.