Выбор ответа Junior Классы и интерфейсы обновлено

Экземпляр абстрактного класса

Вопрос

Какая строка не скомпилируется?

abstract class Shape {
  abstract area(): number;
}
class Circle extends Shape {
  area() { return 3; }
}

const s1 = new Shape();           // A
const s2 = new Circle();          // B
const s3: Shape = new Circle();   // C

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: A. Абстрактный класс нельзя создать через new: у него есть нереализованные абстрактные члены.

Варианты ответа

  1. Aправильный ответ
  2. B
  3. C
  4. Все компилируются

Разбор

Абстрактный класс нельзя создать через new: у него есть нереализованные абстрактные члены. Строка A даёт ошибку. Наследник Circle реализует area, его создавать можно (B), а переменной типа Shape можно присвоить наследника (C).

«Все компилируются» неверно: запрет создания и есть смысл abstract.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.