Abstrakte Klasse gegen Vererbung
Abstrakte Klasse und Vererbung sind zwei wichtige objektorientierte Konzepte, die in vielen objektorientierten Programmiersprachen wie Java zu finden sind. Abstrakte Klasse kann als abstrakte Version einer regulären (konkreten) Klasse betrachtet werden, während Vererbung es neuen Klassen ermöglicht, andere Klassen zu erweitern. Abstrakte Klasse ist eine Klasse, die nicht initialisiert, sondern erweitert werden kann. Daher sind abstrakte Klassen nur dann sinnvoll, wenn die Programmiersprache die 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 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). Daher sind abstrakte Klassen nur dann sinnvoll, wenn die Programmiersprache die 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. Daher fungieren abstrakte Klassen als übergeordnete Klassen, von denen untergeordnete Klassen abgeleitet werden, sodass die untergeordnete Klasse die unvollständigen Merkmale 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. Dies alles bedeutet, dass die Programmiererin, wenn sie eine Klasse als Zusammenfassung nominiert, sagt, dass die Klasse unvollständig ist und Elemente enthält, die von den ererbenden Unterklassen vervollständigt werden müssen. Dies ist eine gute Möglichkeit, einen Vertrag zwischen zwei Programmierern zu erstellen, was die Aufgaben in der Softwareentwicklung vereinfacht. Die Programmiererin, die Code zum Erben schreibt, muss die Methodendefinitionen genau befolgen (kann aber natürlich ihre 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 bietet im Wesentlichen die Wiederverwendung von Code, indem die Eigenschaften und das Verhalten einer vorhandenen Klasse um eine neu definierte Klasse erweitert werden. Wenn eine neue Unterklasse (oder abgeleitete Klasse) eine Superklasse (oder übergeordnete Klasse) erweitert, erbt 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). Normalerweise kann eine Unterklasse nicht mehrere Superklassen erweitern (z. B. in Java). Daher können Sie Erweiterungen nicht für die Mehrfachvererbung verwenden. Um eine Mehrfachvererbung zu haben, 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 zu verwenden. 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 abstrakten Klasse erben (dies ist keine Qualität der abstrakten Klassen an sich, sondern eine Einschränkung der Vererbung).