Вопрос проверяет понимание принципа полиморфизма в объектно-ориентированном программировании и умение применять его в JavaScript.
Полиморфизм — один из ключевых принципов ООП, который позволяет объектам разных классов обрабатывать данные через единый интерфейс. Это значит, что один и тот же метод может работать по-разному в зависимости от объекта, который его вызывает. В JavaScript полиморфизм часто достигается через наследование и переопределение методов.
Рассмотрим базовый класс Animal с методом speak(). Классы Dog и Cat наследуют его и переопределяют метод:
class Animal {
speak() {
console.log('Some sound');
}
}
class Dog extends Animal {
speak() {
console.log('Woof!');
}
}
class Cat extends Animal {
speak() {
console.log('Meow!');
}
}
const animals = [new Dog(), new Cat()];
animals.forEach(animal => animal.speak());
// Woof!
// Meow!Здесь метод speak() вызывается для каждого объекта, но результат разный — это и есть полиморфизм.
В JavaScript также используется утиная типизация: если объект имеет метод с нужным именем, он может быть использован, даже если не наследует общий класс. Например:
function makeSound(animal) {
animal.speak();
}
const duck = { speak: () => console.log('Quack!') };
makeSound(duck); // Quack!Это упрощает код и делает его более гибким.
Полиморфизм полезен для создания расширяемых и поддерживаемых систем, где можно добавлять новые типы объектов без изменения существующего кода. В JavaScript он реализуется через наследование или утиную типизацию, что делает язык очень гибким для ООП.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию