Mehrfachvererbung


Mehrfachvererbung
UML Klassendiagramm einer 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 können. 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 bzw. 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

  1. Hanspeter Mössenböck, Objektorientierte Programmierung in Oberon-2, Springer-Verlag, 1993

Weblinks


Wikimedia Foundation.

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Is-a — Vererbung dargestellt mittels UML. Die abgeleitete Klasse hat die Attribute x und y und verfügt über die Methoden a und b (im UML Sprachgebrauch Operationen a und b). Die Vererbung (engl. Inheritance) ist eines der grundlegenden Konzepte der… …   Deutsch Wikipedia

  • Vererbung (objektorientierte Programmierung) — Vererbung dargestellt mittels UML. Die abgeleitete Klasse hat die Attribute x und y und verfügt über die Methoden a und b (im UML Sprachgebrauch Operationen a und b). Die Vererbung (engl. Inheritance) ist eines der grundlegenden Konzepte der… …   Deutsch Wikipedia

  • Vererbung (Programmierung) — Vererbung dargestellt mittels UML. Die abgeleitete Klasse hat die Attribute x und y und verfügt über die Methoden a und b (im UML Sprachgebrauch Operationen a und b). Die Vererbung (engl. Inheritance) ist eines der grundlegenden Konzepte der… …   Deutsch Wikipedia

  • Diamond-Problem — Vererbungsbeziehungen beim Diamond Problem Das Diamond Problem entsteht durch Mehrfachvererbung in der Objektorientierten Programmierung und Wissensmodellierung. Es kann auftreten, wenn eine Klasse D auf zwei verschiedenen Vererbungspfaden (B und …   Deutsch Wikipedia

  • Java (Programmiersprache) — Java Basisdaten Paradigmen: Objektorientierte Programmiersprache Erscheinungsjahr …   Deutsch Wikipedia

  • Adapter Design Pattern — Der Adapter (englisch Adapter, Wrapper) ist ein Entwurfsmuster aus dem Bereich der Softwareentwicklung und gehört zu der Kategorie der Strukturmuster (Structural Patterns). Das Muster dient zur Übersetzung einer Schnittstelle in eine andere.… …   Deutsch Wikipedia

  • Autoboxing — Der Adapter (englisch Adapter, Wrapper) ist ein Entwurfsmuster aus dem Bereich der Softwareentwicklung und gehört zu der Kategorie der Strukturmuster (Structural Patterns). Das Muster dient zur Übersetzung einer Schnittstelle in eine andere.… …   Deutsch Wikipedia

  • Hüllenklasse — Der Adapter (englisch Adapter, Wrapper) ist ein Entwurfsmuster aus dem Bereich der Softwareentwicklung und gehört zu der Kategorie der Strukturmuster (Structural Patterns). Das Muster dient zur Übersetzung einer Schnittstelle in eine andere.… …   Deutsch Wikipedia

  • JFC — Java Objektorientierte Programmiersprache Basisdaten Paradigmen: Objektorientierte Programmiersprache Aktuelle  …   Deutsch Wikipedia

  • Java (Framework) — Java Objektorientierte Programmiersprache Basisdaten Paradigmen: Objektorientierte Programmiersprache Aktuelle  …   Deutsch Wikipedia