522 Stimmen

Wann sollte man eine Schnittstelle anstelle einer abstrakten Klasse verwenden und umgekehrt?

Dies könnte eine allgemeine OOP-Frage sein. Ich wollte einen generischen Vergleich zwischen einer Schnittstelle und einer abstrakten Klasse auf der Grundlage ihrer Verwendung anstellen.

Wann würde man eine Schnittstelle und wann eine abstrakte Klasse verwenden wollen? ?

2voto

Sebastian Punkte 821

Verwenden Sie eine abstrakte Klasse, wenn Sie einige grundlegende Implementierungen bereitstellen möchten.

1voto

Peter Miehle Punkte 5908

In Java kann man von einer (abstrakten) Klasse erben, um Funktionalität "bereitzustellen", und man kann viele Schnittstellen implementieren, um Funktionalität "sicherzustellen".

1voto

Ayoub Boumzebra Punkte 2199

Die kurze Antwort: Eine abstrakt Klasse ermöglicht es Ihnen, Funktionen zu erstellen, die von Unterklassen implementiert oder überschrieben werden können. Eine Schnittstelle erlaubt Ihnen nur die Definition von Funktionen, nicht deren Implementierung. Und während eine Klasse nur eine abstrakte Klasse erweitern kann, kann sie die Vorteile mehrerer Schnittstellen nutzen.

1voto

GANI Punkte 1957

Die grundlegende Faustregel lautet: Für "Substantive" verwenden Abstrakt Klasse und für "Verben" verwenden Schnittstelle

z.B: car ist eine abstrakte Klasse und drive können wir es zu einer Schnittstelle machen.

1voto

Dmitri Nesteruk Punkte 21873

Ein interessanter Bereich, in dem Schnittstellen besser abschneiden als abstrakte Klassen, ist, wenn Sie einer Gruppe von (verwandten oder nicht verwandten) Objekten zusätzliche Funktionen hinzufügen müssen. Wenn man ihnen keine abstrakte Basisklasse geben kann (z. B. weil sie sealed oder bereits ein Elternteil haben), können Sie ihnen stattdessen eine (leere) Dummy-Schnittstelle geben und dann einfach Erweiterungsmethoden für diese Schnittstelle schreiben.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X