Mehrfachvererbung
Bei der Objektorientierten Programmierung handelt es sich um Mehrfachvererbung, wenn eine abgeleitete Klasse direkt von mehr als einer Basisklasse erbt. Ein sequentielles, mehrstufiges Erben wird dagegen nicht als Mehrfachvererbung bezeichnet.
Ein Anwendungsbeispiel hierfür ist die Modellierung eines Amphibienfahrzeugs, das sowohl die Attribute von Landfahrzeug als auch die von Wasserfahrzeug erbt. Damit besitzt Amphibienfahrzeug sowohl eine Räderzahl als auch einen Tiefgang.
Nur wenige Programmiersprachen bieten die Möglichkeit der Mehrfach-Klassenvererbung, zum Beispiel C++, CLOS, Eiffel, Perl und Python. Als Einwand gegen Mehrfach-Klassenvererbung wird häufig genannt, dass sie das Design unnötig kompliziert und undurchsichtig machen kann. So kann es dadurch zu Mehrdeutigkeiten im Rahmen des Diamond-Problems kommen. Bei einigen Programmiersprachen, wie zum Beispiel Oberon und dessen Weiterentwicklungen, wurde daher bewusst auf die Möglichkeit der mehrfachen Implementationsvererbung verzichtet, was durch die Verwendung von Zwillingsklassen kompensiert werden kann.[1]
Hingegen ist Mehrfach-Schnittstellenvererbung unproblematisch. In Java, Object Pascal (Delphi), C# und VB.NET kann eine Klasse beliebig viele Schnittstellen erben. Damit verpflichtet sich diese Klasse, die Methoden der Schnittstelle zur Verfügung zu stellen, und stellt damit auch etwas Ähnliches wie die Ist-ein-Beziehung, die Verhält-sich-wie-Beziehung, her.
Mit einfacher Klassenvererbung und mehrfacher Schnittstellenvererbung sind die meisten Anforderungen an ein Software-Design realisierbar, ohne die Nachteile der uneingeschränkten Mehrfachvererbung in Kauf nehmen zu müssen.
Literatur
- Bernhard Lahres, Gregor Rayman: Praxisbuch Objektorientierung. Von den Grundlagen zur Umsetzung. Galileo Press, Bonn 2006, ISBN 3-89842-624-6
- Iain D. Craig: Object-Oriented Programming Languages: Interpretation. Springer Verlag, London 2007, ISBN 1-84628-773-1
Einzelnachweise
- Hanspeter Mössenböck: Objektorientierte Programmierung in Oberon-2. Springer-Verlag, 1993.