Unterschied zwischen abstrakter Klasse und Vererbung

Anonim

Abstrakte Klasse und 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 neuen Klassen ermöglicht, andere Klassen zu erweitern. Die abstrakte Klasse ist eine Klasse, die nicht initialisiert werden kann, sondern erweitert werden kann. Abstrakte Klassen sind also nur 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 für das Erben von einer (Super-) Klasse verwendet wird.

Was ist abstrakte Klasse?

Normalerweise können abstrakte Klassen, auch als abstrakte Basisklassen (ABC) bekannt, nicht instanziiert werden (eine Instanz dieser Klasse kann nicht erstellt werden). Abstrakte Klassen sind daher nur sinnvoll, wenn die Programmiersprache die Vererbung unterstützt (Möglichkeit, Unterklassen beim Erweitern einer Klasse zu erstellen). Abstrakte Klassen stellen normalerweise ein abstraktes Konzept oder eine Entität mit teilweiser oder keiner Implementierung dar. Abstrakte Klassen fungieren daher 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 (vererbten) abstrakten Methoden implementieren. Wenn die untergeordnete Klasse alle derartigen abstrakten Methoden implementiert, ist dies eine konkrete Klasse. Wenn dies jedoch nicht der Fall ist, wird die untergeordnete Klasse ebenfalls zu einer abstrakten Klasse. Was das alles bedeutet, ist, dass wenn die Programmiererin eine Klasse als Abstract nominiert, sie sagt, dass die Klasse unvollständig sein wird und sie Elemente haben wird, 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. Der Programmierer, der Code zum Erben schreibt, muss genau den Methodendefinitionen folgen (aber natürlich eine eigene Implementierung haben).

Was ist Inheritance?

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 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 eine neue Unterklasse (oder abgeleitete Klasse) eine Superklasse (oder Elternklasse) erweitert, wird diese Unterklasse alle Attribute und Methoden der Superklasse erben. Die Unterklasse kann optional das Verhalten überschreiben (neue oder erweiterte Funktionalität für Methoden bereitstellen), die von der übergeordneten Klasse geerbt wird.Typischerweise kann eine Unterklasse nicht mehrere Super-Klassen erweitern (zB in Java). Daher können Sie extends nicht für mehrere Vererbung verwenden. Um mehrere Vererbung zu haben, müssen Sie Schnittstellen verwenden.

Was ist der Unterschied zwischen abstrakter Klasse und Vererbung?

Abstrakte Klassen stellen normalerweise ein abstraktes Konzept oder eine Entität mit partieller oder keiner Implementierung dar. 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 und wenn die Klasse erweitert wird, werden alle Methoden (Abstrakt und Konkret) vererbt. Die geerbte Klasse kann alle oder alle Methoden implementieren. Wenn alle Abstract-Methoden nicht implementiert sind, wird diese Klasse ebenfalls zu einer Abstract-Klasse. Eine Klasse kann nicht von mehr als einer Abstrakt-Klasse erben (dies ist keine Qualität von Abstrakt-Klassen an sich, sondern eine Beschränkung der Vererbung).