Junior — Middle
Фарқиятҳои байни синфи абстрактӣ ва интерфейс дар барномасозии объектӣ-равона чӣҳоянд?
sobes.tech AI
Ҷавоб аз AI
Класи абстракт і інтерфейси — два способи опису контрактів і поведінки в об'єктно-орієнтованому програмуванні, але з різними характеристиками:
- Абстрактний клас може містити абстрактні методи (без реалізації), а також методи з реалізацією і поля (стан). Він служить базовим класом, від якого можна успадковувати.
- Інтерфейс описує тільки підписи методів (контракт), не містить стан і зазвичай не містить реалізацію (хоча в деяких мовах можливі методи за замовчуванням).
Відмінності:
- Клас може успадковувати тільки від одного абстрактного класу, але реалізовувати кілька інтерфейсів.
- Абстрактний клас може мати конструктори, інтерфейс — ні.
- Абстрактний клас використовується, коли потрібно частково реалізувати функціональність, інтерфейс — коли потрібно задати тільки контракт.
Приклад на Dart (Flutter):
abstract class Animal {
void eat(); // абстрактний метод
void sleep() {
print('Спить'); // метод з реалізацією
}
}
// Інтерфейс у Dart — це клас з тільки абстрактними методами
abstract class Flyable {
void fly();
}
class Bird extends Animal implements Flyable {
@override
void eat() {
print('Птах їсть');
}
@override
void fly() {
print('Птах летить');
}
}