Unterschied zwischen Vererbung und Komposition

Vererbung vs Komposition

Vererbung und Komposition sind zwei wichtige Konzepte in OOP (Object Oriented Programming). Vereinfacht gesagt, beschäftigen sich sowohl die Komposition als auch die Vererbung mit der Bereitstellung zusätzlicher Eigenschaften oder eines Verhaltens für eine Klasse. Vererbung ist die Fähigkeit einer Klasse, Eigenschaften und Verhalten von einer übergeordneten Klasse zu erben, indem sie erweitert wird. Auf der anderen Seite ist Komposition die Fähigkeit einer Klasse, Objekte verschiedener Klassen als Mitgliedsdaten zu enthalten.

Was ist Inheritance?

Wie oben erwähnt, ist Inheritance die Fähigkeit einer Klasse, Eigenschaften und Verhalten von einer übergeordneten Klasse zu erben, indem sie erweitert wird. Vererbung bietet im Wesentlichen die Wiederverwendung von Code, indem es die Erweiterung von Eigenschaften und Verhalten einer vorhandenen Klasse um eine neu definierte Klasse ermöglicht. Wenn Klasse A B erweitert, wird Klasse B als übergeordnete Klasse (oder Superklasse) und Klasse A als untergeordnete Klasse (oder abgeleitete Klasse / Unterklasse) bezeichnet. In diesem Beispielszenario erbt die Klasse A alle öffentlichen und geschützten Attribute und Methoden der Super-Klasse (B). Die Unterklasse kann optional das Verhalten, das von der übergeordneten Klasse geerbt wird, überschreiben (neue oder erweiterte Funktionalität für Methoden bereitstellen).

Vererbung stellt eine "is-a" -Beziehung in OOP dar. Dies bedeutet im Wesentlichen, dass A auch ein B ist. Mit anderen Worten kann B die Klasse mit einer allgemeinen Beschreibung einer bestimmten realen Weltentität sein, aber A spezifiziert eine bestimmte Spezialisierung. In einem realen Programmierproblem könnte die Person-Klasse erweitert werden, um die Employee-Klasse zu erstellen. Dies wird als Spezialisierung bezeichnet. Sie könnten aber auch zuerst die Employee-Klasse erstellen und sie dann auch auf eine Person-Klasse verallgemeinern (zB Generalisierung). In diesem Beispiel hat der Mitarbeiter alle Eigenschaften und das Verhalten der Person (dh Mitarbeiter ist auch eine Person) und kann zusätzliche Funktionen enthalten (also Person ist auch kein Mitarbeiter).

Was ist Komposition?

Komposition ist die Fähigkeit einer Klasse, Objekte verschiedener Klassen als Mitgliedsdaten zu enthalten. Beispielsweise kann Klasse A ein Objekt der Klasse B als Mitglied enthalten. Hier können alle in B definierten öffentlichen Methoden (oder Funktionen) innerhalb der Klasse A ausgeführt werden. Klasse A wird zum Container, während Klasse B zur enthaltenen Klasse wird. Komposition wird auch als Containership bezeichnet. In diesem Beispiel kann gesagt werden, dass Klasse A aus Klasse B besteht. In OOP stellt Composition eine "has-a" -Beziehung dar. Es ist wichtig zu beachten, dass der Container zwar Zugriff auf alle öffentlichen Methoden der enthaltenen Klasse hat, jedoch nicht in der Lage ist, zusätzliche Funktionen zu ändern oder bereitzustellen. Wenn es um ein reales Programmierproblem geht, kann ein Objekt der Klasse TextBox in der Klasse Form enthalten sein, und somit kann gesagt werden, dass ein Formular eine TextBox enthält (oder alternativ dazu besteht ein Formular aus einer TextBox).

Was ist der Unterschied zwischen Vererbung und Komposition?

Obwohl Vererbung und Komposition zwei OOP-Konzepte sind, unterscheiden sie sich in dem, was sie dem Programmierer ermöglichen. Vererbung ist die Fähigkeit einer Klasse, Eigenschaften und Verhalten von einer übergeordneten Klasse zu erben, indem sie sie erweitert, während Komposition die Fähigkeit einer Klasse ist, Objekte verschiedener Klassen als Elementdaten zu enthalten. Wenn eine Klasse erweitert wird, erbt sie alle öffentlichen und geschützten Eigenschaften / Verhaltensweisen, und diese Verhaltensweisen können von der Unterklasse überschrieben werden. Wenn jedoch eine Klasse in einer anderen enthalten ist, kann der Container nicht in der Lage sein, das enthaltene Verhalten zu ändern oder hinzuzufügen. Die Vererbung stellt eine "is-a" -Verwandlung in OOP dar, während die Komposition eine "has-a" -Beziehung darstellt.