Sobes.tech
Junior — Middle

Was ist der Unterschied zwischen einer Schnittstelle und einer abstrakten Klasse im Kontext der objektorientierten Programmierung?

sobes.tech KI

Antwort von AI

Schnittstelle und abstrakte Klasse sind zwei Möglichkeiten, Abstraktionen in der objektorientierten Programmierung zu definieren, aber sie haben wichtige Unterschiede:

  • Schnittstelle beschreibt eine Reihe von Methoden, die eine Klasse implementieren muss, enthält aber keine Implementierung (obwohl in einigen Sprachen Standardimplementierungen möglich sind). Die Schnittstelle kann keinen Zustand (Instanzvariablen) enthalten.
  • Abstrakte Klasse kann sowohl abstrakte Methoden (ohne Implementierung) als auch Methoden mit Implementierung enthalten. Sie kann auch Felder (Zustand) enthalten.

Beispiel in Swift:

protocol Vehicle {
    func startEngine()
}

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

// Abstrakte Klasse in Swift wird durch eine Klasse mit Methoden realisiert, die überschrieben werden müssen
class Animal {
    func makeSound() {
        fatalError("Diese Methode muss überschrieben werden")
    }
}

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

Auf diese Weise legt die Schnittstelle einen Vertrag fest, und die abstrakte Klasse kann eine teilweise Implementierung bereitstellen und Zustand speichern.