Abstrakte Klasse gegen konkrete Klasse

Die meisten gängigen modernen objektorientierten Programmiersprachen wie Java und C # sind klassenbasiert. Sie erreichen die objektorientierten Konzepte wie Kapselung, Vererbung und Polymorphismus durch die Verwendung von Klassen. Klassen sind eine abstrakte Darstellung von Objekten der realen Welt. Klassen können je nach Implementierungsgrad ihrer Methodenfunktionalitäten entweder konkret oder abstrakt sein. Eine konkrete Klasse implementiert alle ihre Methoden vollständig. Eine abstrakte Klasse kann als eingeschränkte Version einer regulären (konkreten) Klasse betrachtet werden, in der sie teilweise implementierte Methoden enthalten kann. In der Regel werden konkrete Klassen als (gerechte) Klassen bezeichnet.

Was ist Betonklasse?

Die Standardklasse ist eine konkrete Klasse. Das Schlüsselwort class wird zum Definieren von Klassen verwendet (z. B. in Java). Und normalerweise werden sie einfach als Klassen bezeichnet (ohne das Adjektiv konkret). Konkrete Klassen zeigen die konzeptionelle Darstellung von Objekten der realen Welt. Klassen haben Eigenschaften, die als Attribute bezeichnet werden. Attribute werden als globale und Instanzvariablen implementiert. Methoden in den Klassen repräsentieren oder definieren das Verhalten dieser Klassen. Methoden und Attribute von Klassen werden als Mitglieder der Klasse bezeichnet. In der Regel wird die Kapselung erreicht, indem die Attribute privat gemacht werden, während öffentliche Methoden erstellt werden, mit denen auf diese Attribute zugegriffen werden kann. Ein Objekt ist die Instanz einer Klasse. Durch Vererbung kann der Benutzer Klassen (als Unterklassen bezeichnet) von anderen Klassen (als Superklassen bezeichnet) erweitern. Durch Polymorphismus kann der Programmierer ein Objekt einer Klasse anstelle eines Objekts seiner Superklasse ersetzen. In der Regel werden die in der Problemdefinition gefundenen Substantive direkt zu Klassen im Programm. Ebenso werden Verben zu Methoden. Öffentlich, privat und geschützt sind die typischen Zugriffsmodifikatoren, die für Klassen verwendet werden.

Was ist abstrakte Klasse?

Abstrakte Klassen werden mit dem Schlüsselwort Abstract deklariert (z. B. in Java). 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, wird sie zu einer konkreten 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 der Unterschied zwischen abstrakter Klasse und konkreter Klasse?

Abstrakte Klassen sind normalerweise teilweise oder gar nicht implementiert. Andererseits haben konkrete Klassen immer eine vollständige Implementierung ihres Verhaltens. Im Gegensatz zu konkreten Klassen können abstrakte Klassen nicht instanziiert werden. Daher müssen abstrakte Klassen erweitert werden, um sie nützlich zu machen. Abstrakte Klassen können abstrakte Methoden enthalten, konkrete Klassen jedoch nicht. Wenn eine abstrakte Klasse erweitert wird, werden alle Methoden (sowohl abstrakte als auch konkrete) vererbt. Die geerbte Klasse kann eine oder alle Methoden implementieren. Wenn nicht alle abstrakten Methoden implementiert sind, wird diese Klasse auch zu einer abstrakten Klasse.