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"); }
}