Sobes.tech
Junior — Middle

Obyektga yo'naltirilgan dasturlash kontekstida interfeys va abstrakt sinf o'rtasidagi farq nima?

sobes.tech AI

AIdan javob

Oboy interfeys və abstrakt sinif obyekt yönümlü proqramlaşdırmada abstraksiyaları təyin etməyin iki yoludur, 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ə varsayılan 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.