Sobes.tech
Junior — Middle

Wat is het verschil tussen een interface en een abstracte klasse in de context van objectgeoriënteerd programmeren?

sobes.tech AI

Antwoord van AI

De interface en de abstracte klasse zijn twee manieren om abstracties te definiëren in objectgeoriënteerd programmeren, maar ze hebben belangrijke verschillen:

  • Interface beschrijft een set methoden die een klasse moet implementeren, maar bevat geen implementatie (hoewel in sommige talen standaardmethoden met implementatie mogelijk zijn). De interface kan geen toestand bevatten (instantievariabelen).
  • Abstracte klasse kan zowel abstracte methoden (zonder implementatie) als methoden met implementatie bevatten. Het kan ook velden (toestand) bevatten.

Voorbeeld in Swift:

protocol Vehicle {
    func startEngine()
}

class Car: Vehicle {
    func startEngine() {
        print("Motor gestart")
    }
}

// De abstracte klasse in Swift wordt geïmplementeerd via een klasse met te overschrijven methoden
class Animal {
    func makeSound() {
        fatalError("Deze methode moet worden overschreven")
    }
}

class Dog: Animal {
    override func makeSound() {
        print("Woef")
    }
}

Op deze manier stelt de interface een contract vast, en kan de abstracte klasse een gedeeltelijke implementatie bieden en toestand opslaan.