Abstrakte Klasse gegen Erbschaft
Abstrakte Klassen und Vererbung sind zwei wichtige objektorientierte Konzepte, die in vielen objektorientierten Programmiersprachen wie Java zu finden sind. Eine abstrakte Klasse kann als abstrakte Version einer regulären (konkreten) Klasse betrachtet werden, während die Vererbung es ermöglicht, dass neue Klassen andere Klassen erweitern. Abstrakte Klasse ist eine Klasse, die nicht initialisiert werden kann, aber erweitert werden kann. Abstrakte Klassen sind also nur dann sinnvoll, wenn die Programmiersprache Vererbung unterstützt. In Java werden Abstract-Klassen mit dem Abstract-Schlüsselwort deklariert, während das Extends-Schlüsselwort zum Erben von einer (Super-) Klasse verwendet wird.
Was ist abstrakte Klasse??
In der Regel können abstrakte Klassen (ABC - Abstract Base Classes) nicht instanziiert werden (eine Instanz dieser Klasse kann nicht erstellt werden). Abstrakte Klassen sind also nur dann von Bedeutung, wenn die Programmiersprache Vererbung unterstützt (Fähigkeit zum Erstellen von Unterklassen durch Erweitern einer Klasse). Abstrakte Klassen repräsentieren normalerweise ein abstraktes Konzept oder eine Entität mit teilweiser oder keiner Implementierung. Abstrakte Klassen fungieren daher als übergeordnete Klassen, von denen untergeordnete Klassen abgeleitet werden, sodass die untergeordneten Klassen die unvollständigen Features der übergeordneten Klasse gemeinsam nutzen und Funktionen hinzugefügt werden können, um sie abzuschließen.
Abstrakte Klassen können abstrakte Methoden enthalten. Unterklassen, die eine abstrakte Klasse erweitern, können diese (vererbten) Abstract-Methoden implementieren. Wenn die untergeordnete Klasse alle derartigen Abstract-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 bedeutet alles, wenn der Programmierer eine Klasse als Abstract nominiert, sagt sie, dass die Klasse unvollständig sein wird und Elemente enthalten werden, die von den erbenden Unterklassen vervollständigt werden müssen. Dies ist eine gute Möglichkeit, einen Vertrag zwischen zwei Programmierern zu erstellen, wodurch die Aufgaben bei der Softwareentwicklung vereinfacht werden. Der Programmierer, der Code schreibt, um zu erben, muss die Methodendefinitionen genau befolgen (natürlich kann sie auch 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 Java-Programmiersprache zu implementieren. Vererbung ermöglicht im Wesentlichen die Wiederverwendung von Code, indem die Erweiterung der Eigenschaften und des Verhaltens einer vorhandenen Klasse um eine neu definierte Klasse ermöglicht wird. 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 Verhalten überschreiben (neue oder erweiterte Funktionalität für Methoden bereitstellen), das von der übergeordneten Klasse geerbt wird. Normalerweise kann eine Unterklasse nicht mehrere Superklassen erweitern (z. B. in Java). Daher können Sie keine Erweiterungen 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. Vererbung ermöglicht es neuen Klassen, andere Klassen zu 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 (abstrakte und konkrete) 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 Eigenschaft von abstrakten Klassen an sich, sondern eine Einschränkung der Vererbung)..