Junior — Middle
Obyekt yönümlü proqramlaşdırma kontekstində interfeys və abstrakt sinif arasındakı fərq nədir?
sobes.tech Süni İntellekt
AI-dan cavab
Obyekt yönümlü proqramlaşdırmada abstraksiyaları təyin etməyin iki yolu var: interfeys və abstrakt sinif, lakin onlar əsas fərqlərə malikdir:
- Interfeys sinifin həyata keçirməli olduğu metodların toplusunu təsvir edir, lakin implementasiya daxil etmir (bəzən dillərdə standart implementasiya olan metodlar mövcuddur). Interfeys vəziyyət (nümunə dəyişənləri) daxil edə bilməz.
- Abstrakt sinif həm abstrakt metodlar (implementasiya olmadan), həm də implementasiya olan metodlar daxil edə bilər. O, həmçinin sahələr (vəziyyət) daxil edə bilər.
Swift-də nümunə:
protocol Vehicle {
func startEngine()
}
class Car: Vehicle {
func startEngine() {
print("Mühərrik işə salındı")
}
}
// Swift-də abstrakt sinif, dəyişdirilməli olan metodlara malik sinif vasitəsilə həyata keçirilir
class Animal {
func makeSound() {
fatalError("Bu metodun dəyişdirilməsi lazımdır")
}
}
class Dog: Animal {
override func makeSound() {
print("Hav")
}
}
Beləliklə, interfeys müqaviləni müəyyən edir və abstrakt sinif qismən implementasiya təmin edə və vəziyyəti saxlaya bilər.