Встречается на собеседованиях • сегодня

В чем разница между абстрактным класом и интерфейсом

Абстрактный класс может содержать реализацию методов, поля и конструкторы, тогда как интерфейс — только абстрактные методы (до TS 1.8) и сигнатуры. Класс может наследовать только один абстрактный класс, но реализовать множество интерфейсов.

Пример:

typescript
// Абстрактный класс
abstract class Animal {
  abstract makeSound(): void;
  move(): void {
    console.log("Moving...");
  }
}

// Интерфейс
interface IFlyable {
  fly(): void;
}

class Bird extends Animal implements IFlyable {
  makeSound() { console.log("Chirp!"); }
  fly() { console.log("Flying..."); }
}

Ключевые отличия:

  • Абстрактный класс — частичная реализация, интерфейс — контракт.
  • Интерфейсы поддерживают множественное наследование.
  • Абстрактные классы могут иметь модификаторы доступа, интерфейсы — только public.
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы