@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 или я неправильно унаследовался от абстрактного класса?
  • Вопрос задан
  • 70 просмотров
Решения вопроса 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();
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы