Sobes.tech
Middle

Was ist der Unterschied zwischen einer abstrakten Klasse und einer Schnittstelle?

sobes.tech KI

Antwort von AI

Abstrakte Klasse — ist eine Klasse, die sowohl implementierte Methoden als auch abstrakte Methoden (ohne Implementierung) enthalten kann. Sie dient als Basis für die Vererbung und kann Zustand (Felder) enthalten.

Schnittstelle — ist ein Vertrag, der eine Reihe von Methoden ohne Implementierung definiert (im klassischen Verständnis). Die Klasse, die die Schnittstelle implementiert, muss alle ihre Methoden implementieren.

Hauptunterschiede:

  • Eine abstrakte Klasse kann Implementierungen und Zustand enthalten, die Schnittstelle nur Signaturen von Methoden (in einigen Sprachen können Schnittstellen Standardmethoden enthalten).
  • Eine Klasse kann nur von einer abstrakten Klasse erben, aber mehrere Schnittstellen implementieren.
  • Die abstrakte Klasse bietet eine teilweise Implementierung, die Schnittstelle nur den Vertrag.

Beispiel in Java:

abstract class Animal {
    void eat() { System.out.println("Fressen"); }
    abstract void sound();
}

interface Flyable {
    void fly();
}

class Bird extends Animal implements Flyable {
    void sound() { System.out.println("Zwitschern"); }
    public void fly() { System.out.println("Fliegen"); }
}