Назад к вопросам
JuniorТеорияЧасто
Что выведет программа?
class Animal {
speak() {
return "Hi";
}
}
class Dog extends Animal {
speak() {
return super.speak() + " Woof";
}
}
const d = new Dog();
console.log(d.speak());Hi Woof
- Ждать
Hi: метод вDogпереопределяет методAnimal, поэтомуd.speak()запускает версиюDog, а она дописывает" Woof"к результату родителя. - Считать, что
super.speak()снова вызываетspeakизDog:superищет метод в родительском классе, поэтому запускаетсяspeakизAnimalи возвращает"Hi".
- Что выведет программа, если
Dogвернёт"Woof", не вызываяsuper.speak()? - Чему равно
d instanceof Animalи почему?