Изменить метод наследника в родительском классе
Здравствуйте. Нужно переписать родительский базовый класс, чтобы выполнялись следующие условия:
class BaseClass {
// ... ваш код
}
class MyClass extends BaseClass {
result(a, b) {
this.a = a;
this.b = b;
return 100 - this.a + this.b;
}
}
let m = new MyClass();
m.result(10, 20) === 90;
m.result(20, 10) === 110;
В дочернем методе надо поменять местами a и b, но как это сделать из родителского класса непонятно. |
В родительском конструкторе переопределить можно:
class BaseClass {
constructor(a, b) {
this.result = (a, b) => {
this.a = b;
this.b = a;
return 100 - this.a + this.b;
}
}
}
class MyClass extends BaseClass {
result(a, b) {
this.a = a;
this.b = b;
return 100 - this.a + this.b;
}
}
let m = new MyClass();
console.log(m.result(10, 20) === 90);
console.log(m.result(20, 10) === 110);
Получается, что если имена методов совпадают, старый новым перезаписать нельзя. |
Sigizmund2012, на самом деле можно, фишка в том что "методы класса" на самом деле методы лежащие в прототипе.
Задавая же "метод" в конструкторе вы на самом деле добавляете его самому получаемому объекту. При вызове метода в первую очередь он ищется именно в объекте, а потом уже смотрит в цепочке прототипов. Ну и смена из родительского класса методов ребёнка это полнейшая ересь. А так ещё вариант - прописать на a и b сеттеры и геттеры, чтоб выдавали значения друг друга.) |
| Часовой пояс GMT +3, время: 06:36. |