Sobes.tech
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.