Наследование в Java

Наследование в Java: ключевое слово extends, переопределение методов, вызов родителя через super и иерархия классов.

Наследование позволяет создать новый класс на основе существующего: класс-потомок получает поля и методы родителя и может добавлять свои или изменять унаследованные.

Ключевое слово extends

Класс-потомок объявляют с extends. Он автоматически получает всё, что есть в родителе.

class Animal {
    String name;

    void eat() {
        System.out.println(name + " ест");
    }
}

class Dog extends Animal {     // Dog наследует Animal
    void bark() {
        System.out.println(name + " лает");   // name достался от Animal
    }
}
Dog d = new Dog();
d.name = "Рекс";
d.eat();      // метод родителя
d.bark();     // собственный метод

Вывод:

Рекс ест
Рекс лает

Переопределение методов

Потомок может заменить унаследованный метод своей версией — это переопределение (override). Метод помечают аннотацией @Override.

class Animal {
    void sound() {
        System.out.println("Какой-то звук");
    }
}

class Cat extends Animal {
    @Override
    void sound() {
        System.out.println("Мяу");
    }
}
Animal a = new Cat();
a.sound();      // вызовется версия Cat

Вывод:

Мяу

Ключевое слово super

super обращается к родителю: вызывает его конструктор или переопределённый метод. Вызов super(...) должен быть первой строкой конструктора потомка.

class Animal {
    String name;
    Animal(String name) {
        this.name = name;
    }
}

class Dog extends Animal {
    String breed;
    Dog(String name, String breed) {
        super(name);          // вызываем конструктор Animal
        this.breed = breed;
    }
}
Dog d = new Dog("Рекс", "Овчарка");
System.out.println(d.name + " — " + d.breed);

Вывод:

Рекс — Овчарка

В Java класс может наследовать только один родитель (нет множественного наследования классов). Все классы неявно наследуют общий класс Object.

Коротко

  • Наследование (extends) передаёт потомку поля и методы родителя.
  • Потомок может переопределить метод (@Override) своей версией.
  • super вызывает конструктор или метод родителя; super(...) — первой строкой конструктора.
  • В Java только одиночное наследование классов.
Проверьте себя
1. Каким ключевым словом класс наследует другой класс?
Aimplements
Bextends
Cinherits
Dsuper
2. Для чего нужно ключевое слово super?
AСоздать новый объект
BОбратиться к конструктору или методу родителя
CОбъявить константу
DЗавершить программу
3. Сколько классов-родителей может напрямую наследовать класс в Java?
AСколько угодно
BТолько один
CРовно два
DНи одного
Поддержать проект