Sobes.tech
Junior — Middle

Ի՞նչ տարբերություն կա օբյեկտային ուղղված ծրագրավորման համատեքստում ինտերֆեյսի և աբստրակտ դասի միջև։

sobes.tech AI

Պատասխան AI-ից

Օբյեկտային ուղղված ծրագրավորման մեջ աբստրակցիաները սահմանելու երկու եղանակ են՝ ինտերֆեյսը և աբստրակտ դասը, բայց դրանք ունեն հիմնական տարբերություններ.

  • Ինտերֆեյս նկարագրում է մեթոդների հավաքածու, որոնք դասը պետք է իրագործի, բայց չի պարունակում իրականացման (հակառակ դեպքում որոշ լեզուներում հնարավոր է ունենալ նախնական իրականացման մեթոդներ): Ինտերֆեյսը չի կարող պարունակել վիճակ (օբյեկտի փոփոխականներ):
  • Աբստրակտ դաս կարող է պարունակել ինչպես աբստրակտ մեթոդներ (ան իրականացման), այնպես էլ մեթոդներ with իրականացում: Այն կարող է պարունակել նաև դաշտեր (վիճակ):

Օրինակ Swift-ում:

protocol Vehicle {
    func startEngine()
}

class Car: Vehicle {
    func startEngine() {
        print("Մոտորը սկսվեց")
    }
}

// Աբստրակտ դասը Swift-ում իրականացնում է դասով, որի մեթոդները պետք է վերագրի
class Animal {
    func makeSound() {
        fatalError("Այս մեթոդը պետք է վերագրի")
    }
}

class Dog: Animal {
    override func makeSound() {
        print("Հաու")
    }
}

Այսպիսով, ինտերֆեյսը սահմանում է պայմանագիր, իսկ աբստրակտ դասը կարող է տրամադրել մասնակի իրականացում և պահել վիճակ։