Abstrakte Klasse gegen Vererbung
 

Abstrakte Klasse und Vererbung sind zwei wichtige objektorientierte Konzepte, die in vielen objektorientierten Programmiersprachen wie Java zu finden sind. Die abstrakte Klasse kann als abstrakte Version einer regulären (konkreten) Klasse betrachtet werden, während die Vererbung es neuen Klassen ermöglicht, andere Klassen zu erweitern. Abstrakte Klasse ist eine Klasse, die nicht initialisiert, sondern erweitert werden kann. Abstrakte Klassen sind nur dann sinnvoll, wenn die Programmiersprache Vererbung unterstützt. In Java werden abstrakte Klassen mit dem Schlüsselwort Abstract deklariert, während das Schlüsselwort Extends zum Erben von einer (Super-) Klasse verwendet wird.

Was ist eine abstrakte Klasse?

In der Regel können abstrakte Klassen, auch als abstrakte Basisklassen (ABC) bezeichnet, nicht instanziiert werden (eine Instanz dieser Klasse kann nicht erstellt werden). Abstrakte Klassen sind nur dann sinnvoll, wenn die Programmiersprache Vererbung unterstützt (Möglichkeit, Unterklassen aus der Erweiterung einer Klasse zu erstellen). Abstrakte Klassen repräsentieren normalerweise ein abstraktes Konzept oder eine abstrakte Entität mit teilweiser oder keiner Implementierung. Abstrakte Klassen fungieren daher als übergeordnete Klassen, von denen untergeordnete Klassen abgeleitet werden, sodass die untergeordnete Klasse die unvollständigen Features der übergeordneten Klasse gemeinsam nutzt und Funktionen hinzugefügt werden können, um sie zu vervollständigen.

Abstrakte Klassen können abstrakte Methoden enthalten. Unterklassen, die eine abstrakte Klasse erweitern, können diese (geerbten) abstrakten Methoden implementieren. Wenn die untergeordnete Klasse alle diese abstrakten Methoden implementiert, handelt es sich um eine konkrete Klasse. Wenn dies nicht der Fall ist, wird die untergeordnete Klasse auch zu einer abstrakten Klasse. Das alles bedeutet, dass die Programmiererin, wenn sie eine Klasse als Abstract nominiert, sagt, dass die Klasse unvollständig ist und Elemente enthält, die von den erbenden Unterklassen vervollständigt werden müssen. Dies ist eine gute Möglichkeit, einen Vertrag zwischen zwei Programmierern zu erstellen, was die Aufgaben bei der Softwareentwicklung vereinfacht. Der Programmierer, der den zu erbenden Code schreibt, muss die Methodendefinitionen genau befolgen (kann aber natürlich eine eigene Implementierung haben).

Was ist Vererbung?

Vererbung ist ein objektorientiertes Konzept, mit dem neue Klassen andere Klassen erweitern können. Das Schlüsselwort "Extends" wird verwendet, um das Konzept der Vererbung in der Programmiersprache Java zu implementieren. Die Vererbung ermöglicht im Wesentlichen die Wiederverwendung von Code, indem Eigenschaften und Verhalten einer vorhandenen Klasse um eine neu definierte Klasse erweitert werden. Wenn eine neue Unterklasse (oder abgeleitete Klasse) eine Superklasse (oder übergeordnete Klasse) erweitert, übernimmt diese Unterklasse alle Attribute und Methoden der Superklasse. Die Unterklasse kann optional das von der übergeordneten Klasse geerbte Verhalten überschreiben (neue oder erweiterte Funktionen für Methoden bereitstellen). Typischerweise kann eine Unterklasse nicht mehrere Superklassen erweitern (z. B. in Java). Aus diesem Grund können Sie extend nicht für die Mehrfachvererbung verwenden. Um eine Mehrfachvererbung zu erhalten, müssen Sie Schnittstellen verwenden.

Was ist der Unterschied zwischen abstrakter Klasse und Vererbung?

Abstrakte Klassen repräsentieren normalerweise ein abstraktes Konzept oder eine Entität mit teilweiser oder keiner Implementierung. Durch Vererbung können neue Klassen andere Klassen erweitern. Da abstrakte Klassen nicht instanziiert werden können, müssen Sie das Konzept der Vererbung verwenden, um abstrakte Klassen verwenden zu können. Andernfalls hat eine Abstract-Klasse keine Verwendung. Abstrakte Klassen können abstrakte Methoden enthalten. Wenn die Klasse erweitert wird, werden alle Methoden (abstrakt und konkret) vererbt. Die geerbte Klasse kann eine oder alle Methoden implementieren. Wenn nicht alle Abstract-Methoden implementiert sind, wird diese Klasse auch zu einer Abstract-Klasse. Eine Klasse kann nicht von mehr als einer Abstract-Klasse erben (dies ist keine Eigenschaft von Abstract-Klassen an sich, sondern eine Einschränkung der Vererbung).