Вопрос проверяет понимание ключевых различий между абстрактными классами и интерфейсами в ООП.
Абстрактный класс — это класс, который нельзя создать напрямую, только унаследовать. Он может содержать реализацию методов.
Интерфейс — это контракт, который описывает, какие методы должны быть у класса. Он не содержит реализации.
Может содержать реализованные методы и поля.
Использует ключевое слово abstract (в TypeScript/Java).
Подходит для общего поведения, которое будет у нескольких классов.
Пример (TypeScript):
abstract class Animal {
abstract makeSound(): void; // Должен быть реализован
move() { console.log("Moving..."); } // Уже реализован
}
class Dog extends Animal {
makeSound() { console.log("Woof!"); }
}Описывает только сигнатуры методов (без реализации).
Класс может реализовывать много интерфейсов.
Используется для строгого контракта.
Пример (TypeScript):
interface Flyable {
fly(): void;
}
class Bird implements Flyable {
fly() { console.log("Flying!"); }
}Абстрактные классы подходят для шаблонного поведения, интерфейсы — для определения обязательных методов.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию