Konzeptionelle Fragen zu Schnittstellen

24/11/2009 - 06:24 von Markus Fischer | Report spam
Hallo,

Möglichkeit 1
...Eigentliche Objekt,
Klasse
Schnittstelle -- abstract class /virtual Funktionen -- override Funktionen


Möglichkeit 2
.Eigentliche Objekt, Klasse
Schnittstelle -- nur die Schnittstelle


Was spricht für Möglichkeit 1, wo sind die Vor-/Nachteile


Grüße Markus
 

Lesen sie die antworten

#1 Konrad Neitzel
24/11/2009 - 07:07 | Warnen spam
Hallo Markus,

ich hoffe, ich habe Dich richtig verstanden: Du möchtest wissen, wo die
Unterschiede sind zwischen dem Einsatz von abstract Klassen und einem
Interface?

Bei einer Abstract Klasse hast Du den Vorteil, dass Du in der Klasse auch
Code mitgeben kannst. Gewisse Funktionen sind halt nicht abstract sondern
bereits implementiert. Aber zur Nutzung muss von dieser Klasse abgeleitet
werden, was zum einen damit die Vererbungsmöglichkeit ausschöpft (eine
Klasse kann nur von einer anderen Klasse abgeleitet sein!).

Bei einem Interface wird lediglich eine Menge an Funktionen angegeben, die
implementiert werden müssen. In einem Interface steckt sonst keinerlei Code.
Dafür kann eine Klasse, die ein bestimmtes Interface implementiert noch von
einer anderen Klasse abgeleitet sein und die kann noch weitere Interfaces
implementieren.

Generell ist der code bei Verwendung eines Interfaces besser Entkoppelt.
Hier findet sich dann z.B. bei clean-code-developer.de die Regel "Favour
Composition over Inheritance", die von Interesse sein könnte/sollte.

Ich hoffe, ich konnte etwas helfen.

Mit den besten Grüßen,

Konrad

Ähnliche fragen