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("Гав")
}
}
Инчунин, интерфейс шартнома муайян мекунад, ва синфи абстрактӣ метавонад иҷрои қисман пешниҳод кунад ва ҳолатро нигоҳ дорад.