Junior — Middle
Care este diferența dintre o interfață și o clasă abstractă în contextul programării orientate pe obiecte?
sobes.tech AI
Răspuns de la AI
Interfața și clasa abstractă sunt două modalități de a defini abstracții în programarea orientată pe obiect, dar au diferențe cheie:
- Interfața descrie un set de metode pe care o clasă trebuie să le implementeze, dar nu conține implementare (deși în unele limbaje sunt posibile metode cu implementare implicită). Interfața nu poate conține stare (variabile de instanță).
- Clasa abstractă poate conține atât metode abstracte (fără implementare), cât și metode cu implementare. De asemenea, poate conține câmpuri (stare).
Exemplu în Swift:
protocol Vehicle {
func startEngine()
}
class Car: Vehicle {
func startEngine() {
print("Motor pornit")
}
}
// Clasa abstractă în Swift se implementează printr-o clasă cu metode ce trebuie suprascrise
class Animal {
func makeSound() {
fatalError("Această metodă trebuie suprascrisă")
}
}
class Dog: Animal {
override func makeSound() {
print("Ham")
}
}
Astfel, interfața stabilește un contract, iar clasa abstractă poate oferi o implementare parțială și poate păstra stare.