Задать вопрос
@zlodiak

Почему абстрактный метод записан неправильно?

Есть абстрактный класс, который содержит абстрактный метод(без реализации). Есть обычный класс, который унаследовал абстрактный класс и определил реализацию абстрактного метода:

abstract class Figure {
    getArea(): void{
        console.log("Not Implemented")
    }
    abstract getColor(): void {}
}
class Rectangle extends Figure{
  getColor() {
    console.log('is red');
  }
}

// const f = new Figure(); // error
const r = new Rectangle();
console.log(r)
r.getArea();
r.getColor();


DEMO

Проблема в том, что компилятор подчёркивает abstract getColor красной линией и выводит такой текст ошибки:
Method 'getColor' cannot have an implementation because it is marked abstract
.

Подскажите, в чём ошибка? Это глюк vscode или я неправильно унаследовался от абстрактного класса?
  • Вопрос задан
  • 100 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Мидл фронтенд-разработчик
    5 месяцев
    Далее
  • Яндекс Практикум
    React-разработчик
    3 месяца
    Далее
  • Яндекс Практикум
    Фронтенд-разработчик
    10 месяцев
    Далее
Решения вопроса 1
@aarifkhamdi
У вас есть имплементация для getColor. Уберите

abstract class Figure {
    getArea(): void{
        console.log("Not Implemented")
    }
    abstract getColor(): void // {} <<<<<<<<<<<<<<
}
class Rectangle extends Figure{
  getColor() {
    console.log('is red');
  }
}

// const f = new Figure(); // error
const r = new Rectangle();
console.log(r)
r.getArea();
r.getColor();
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы