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("Гав")
}
}
Ошентип, интерфейс келишимди белгилейт, ал эми абстракттуу класс жарым-жартылай ишке ашырууну камсыз кылып, абал сактай алат.