Недавно я видел похожий вопрос, когда смотрел на вопросы технического интервью, и это заставило меня задуматься о наследовании объектов в более общем смысле в JavaScript.
Вот простой код:
class Car {
constructor(make,model) {
this.make = make
this.model = model
}
emitsCarbon() {
return true
}
}
class Hybrid extends Car {
constructor(...args) {
super(...args)
}
emitsCarbon() {
return false
}
}
let car1 = new Hybrid('toyota', 'prius')
car1.emitsCarbon() // returns false
ЧтоМне интересно, есть ли способ вызвать оригинальный метод emitsCarbon()
, который возвращает true (из родительского класса) в экземпляре дочернего класса?
Мое предположение будет отрицательным, если он будет переопределенЯ должен был бы переопределить метод снова в экземпляре car1, чтобы он возвращал true при вызове функции.
Недостаток знаний, которые я ищу, заключается в следующем: в JavaScript можно ссылатьсясоздайте резервную копию уровня наследования классов и просмотрите все свойства родительского класса (методы и т. д.), заданные для экземпляра дочернего классаПохоже, что это возможно в других языках (например, Java), однако у меня не так много опыта работы с этими языками.
Наконец, полезно ли это, т. Е. Нужно ли большеосторожнее с переопределением свойств, которые не должны быть переопределены, я менее уверен. Я думаю, что не следует. Тем не менее, полезно лучше понять перемещение уровня в классах и иерархии наследования классов в целом.
Это не дубликат: Как вызвать родительский метод из дочернего класса в javascript?
Я понимаю вызов родительского метода в дочернем классе, однако я не понимаю вызова (если это вообще возможно, что, по-видимому, нет) родительского метода в дочернем классе экземпляр .