JavaScript - Переопределение класса

В JavaScript переопределение класса - это концепция, согласно которой дочерний класс может предоставить свою собственную реализацию метода, который уже определен в его родительском классе.
Это позволяет дочернему классу изменить или расширить поведение метода родительского класса.

✏️ Синтаксис

javascript
class ParentClass {
    hello() {
        console.log("hi"); // Реализация метода родительского класса
    }
}

class ChildClass extends ParentClass {
    hello() {
        console.log("hello world"); // Реализация метода дочернего класса, переопределяющая метод родительского класса
    }
}

В приведенном выше коде мы определяем ParentClass с методом hello().
Затем мы определяем ChildClass, который расширяет ParentClass и переопределяет метод hello() своей собственной реализацией.

📘 Пример

javascript
class Animal {
    sound() {
        console.log("Животное издает звук");
    }
}

class Dog extends Animal {
    sound() {
        console.log("Собака лает");
    }
}

class Cat extends Animal {
    sound() {
        super.sound(); // Вызов метода родительского класса
        console.log("Кошка мяукает");
    }
}

const animal = new Animal();
animal.sound(); // Вывод: Животное издает звук

const dog = new Dog();
dog.sound(); // Вывод: Собака лает

const cat = new Cat();
cat.sound(); // Вывод: Животное издает звук
             //         Кошка мяукает

В приведенном выше коде у нас есть класс Animal с методом sound().
Затем мы определяем класс Dog, который расширяет класс Animal и переопределяет метод sound() своей собственной реализацией.
Точно так же мы определяем класс Cat, который также расширяет класс Animal и переопределяет метод sound().
В классе Cat мы используем ключевое слово super для вызова метода родительского класса перед добавлением дополнительного поведения.

Когда мы создаем экземпляры этих классов и вызываем метод sound(), мы можем увидеть, как дочерние классы переопределяют метод родительского класса и предоставляют свою собственную реализацию.

...