Sobes.tech
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('Թռչունը թռչում է');
  }
}