Junior — Middle
Ի՞նչ տարբերություններ կան օբյեկտային ուղղված ծրագրավորման մեջ աբստրակտ դասի և ինտերֆեյսի միջև։
sobes.tech AI
Պատասխան AI-ից
Աբստրակտ դաս և ինտերֆեյս երկու եղանակ են օբյեկտ-կողմնորոշված ծրագրավորման մեջ պայմանագրեր և վարքագիծ նկարագրելու համար, բայց տարբեր հատկություններով:
- Աբստրակտ դաս կարող է պարունակել աբստրակտ մեթոդներ (անվերածում), ինչպես նաև մեթոդներ with իրականացման և դաշտեր (պայմաններ): Օգտագործվում է որպես հիմնական դաս, որի վրա կարելի է ժառանգել:
- Ինտերֆեյս նկարագրում է միայն մեթոդների ստորագրությունները (պայմանագիր), չի պարունակում վիճակ և սովորաբար չի պարունակում իրականացում (համենայն դեպս որոշ լեզուներում հնարավոր է):
Տարբերություններ՝
- Դասը կարող է ժառանգել միայն մեկ աբստրակտ դասից, բայց կարող է իրականացնել մի քանի ինտերֆեյսներ:
- Աբստրակտ դասը կարող է ունենալ կոնստրուկտորներ, ինտերֆեյսը՝ ոչ:
- Աբստրակտ դասը օգտագործվում է, երբ անհրաժեշտ է մասամբ իրականացնել ֆունկցիոնալությունը, ինտերֆեյսը՝ երբ անհրաժեշտ է միայն պայմանագիր սահմանել:
Օրինակ Dart (Flutter)-ում:
abstract class Animal {
void eat(); // աբստրակտ մեթոդ
void sleep() {
print('Հագնում է'); // մեթոդ with իրականացում
}
}
// Ինտերֆեյս Dart-ում — դա դաս է միայն աբստրակտ մեթոդներով
abstract class Flyable {
void fly();
}
class Bird extends Animal implements Flyable {
@override
void eat() {
print('Թռչունը ուտում է');
}
@override
void fly() {
print('Թռչունը թռչում է');
}
}