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("Հաու")
}
}
Այսպիսով, ինտերֆեյսը սահմանում է պայմանագիր, իսկ աբստրակտ դասը կարող է տրամադրել մասնակի իրականացում և պահել վիճակ։