Sobes.tech
Junior — Middle

Фарқи байни интерфейс ва синфи абстрактӣ дар контексти барномасозии объектӣ-гаро чӣ аст?

sobes.tech AI

Ҷавоб аз AI

Интерфейс ва синфи абстрактӣ ду роҳи муайян кардани абстраксияҳо дар барномасозии объектӣ мебошанд, аммо онҳо фарқиятҳои калидӣ доранд:

  • Интерфейс маҷмӯи усулҳоро тавсиф мекунад, ки синф бояд иҷро кунад, аммо дар он иҷроиш нест (гарчанде дар баъзе забонҳо усулҳо бо иҷроиши пешфарз имконпазир аст). Интерфейс наметавонад ҳолатро дошта бошад ( тағйирёбандаҳои намуна).
  • Синфи абстрактӣ метавонад ҳам усулҳои абстрактӣ (бе иҷроиш) ва ҳам усулҳои бо иҷроиш дошта бошад. Вай инчунин метавонад майдонҳо (ҳолат) дошта бошад.

Масалан дар Swift:

protocol Vehicle {
    func startEngine()
}

class Car: Vehicle {
    func startEngine() {
        print("Мотор оғоз шуд")
    }
}

// Синфи абстрактӣ дар Swift тавассути синф бо усулҳое, ки бояд иваз карда шаванд, амалӣ мешавад
class Animal {
    func makeSound() {
        fatalError("Ин усул бояд иваз карда шавад")
    }
}

class Dog: Animal {
    override func makeSound() {
        print("Гав")
    }
}

Инчунин, интерфейс шартнома муайян мекунад, ва синфи абстрактӣ метавонад иҷрои қисман пешниҳод кунад ва ҳолатро нигоҳ дорад.