Unterschied zwischen abstrakter Klasse und konkreter Klasse

Unterschied zwischen abstrakter Klasse und konkreter Klasse
Unterschied zwischen abstrakter Klasse und konkreter Klasse

Video: Unterschied zwischen abstrakter Klasse und konkreter Klasse

Video: Unterschied zwischen abstrakter Klasse und konkreter Klasse
Video: Abstrakte Klasse vs. Interface in Java 2024, Dezember
Anonim

Abstrakte Klasse vs. Konkrete Klasse

Die meisten populären modernen objektorientierten Programmiersprachen wie Java und C sind klassenbasiert. Sie erreichen die objektorientierten Konzepte wie Kapselung, Vererbung und Polymorphie durch die Verwendung von Klassen. Klassen sind eine abstrakte Darstellung von Objekten der realen Welt. Klassen können je nach Implementierungsebene 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, wobei sie teilweise implementierte Methoden enth alten kann. Typischerweise werden konkrete Klassen als (nur) Klassen bezeichnet.

Was ist Betonklasse?

Die Standardklasse ist eine konkrete Klasse. Das Schlüsselwort class wird verwendet, um Klassen zu definieren (z. B. in Java). Und normalerweise werden sie einfach als Klassen (ohne das Adjektiv konkret) bezeichnet. Konkrete Klassen bilden die konzeptionelle Darstellung von Objekten der realen Welt ab. Klassen haben Eigenschaften, die Attribute genannt werden. Attribute werden als globale und Instanzvariablen implementiert. Methoden in den Klassen repräsentieren oder definieren das Verh alten dieser Klassen. Methoden und Attribute von Klassen werden als Mitglieder der Klasse bezeichnet. Typischerweise wird die Kapselung erreicht, indem die Attribute privat gemacht werden, während öffentliche Methoden erstellt werden, die für den Zugriff auf diese Attribute verwendet werden können. Ein Objekt ist die Instanz einer Klasse. Die Vererbung ermöglicht dem Benutzer, Klassen (sogenannte Unterklassen) von anderen Klassen (sogenannte Superklassen) zu erweitern. Polymorphie erlaubt dem Programmierer, ein Objekt einer Klasse anstelle eines Objekts ihrer Superklasse zu ersetzen. Typischerweise werden die in der Problemdefinition gefundenen Substantive direkt zu Klassen im Programm. Und ebenso werden Verben zu Methoden. Öffentlich, privat und geschützt sind die typischen Zugriffsmodifikatoren, die für Klassen verwendet werden.

Was ist eine abstrakte Klasse?

Abstrakte Klassen werden mit dem Schlüsselwort Abstract deklariert (z. B. in Java,). Typischerweise können abstrakte Klassen, auch bekannt als abstrakte Basisklassen (ABC), nicht instanziiert werden (eine Instanz dieser Klasse kann nicht erstellt werden). Abstrakte Klassen sind also nur sinnvoll, wenn die Programmiersprache Vererbung unterstützt (Fähigkeit, Unterklassen durch Erweitern einer Klasse zu erstellen). Abstrakte Klassen stellen normalerweise ein abstraktes Konzept oder eine Entität mit teilweiser oder keiner Implementierung dar. Daher fungieren abstrakte Klassen als übergeordnete Klassen, von denen untergeordnete Klassen abgeleitet werden, sodass die untergeordnete Klasse die unvollständigen Merkmale der übergeordneten Klasse teilt und Funktionen hinzugefügt werden können, um sie zu vervollständigen.

Abstrakte Klassen können abstrakte Methoden enth alten. 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 jedoch nicht der Fall ist, wird die untergeordnete Klasse ebenfalls zu einer abstrakten Klasse. All dies bedeutet, dass der Programmierer, wenn er eine Klasse als Abstract nominiert, damit sagt, dass die Klasse unvollständig ist und Elemente enthält, die von den erbenden Unterklassen vervollständigt werden müssen. Dies ist eine schöne Möglichkeit, einen Vertrag zwischen zwei Programmierern zu erstellen, was Aufgaben in der Softwareentwicklung vereinfacht. Der Programmierer, der zu erbenden Code schreibt, muss sich genau an die Methodendefinitionen h alten (kann aber natürlich seine eigene Implementierung haben).

Was ist der Unterschied zwischen abstrakter Klasse und konkreter Klasse?

Abstrakte Klassen haben normalerweise eine teilweise oder keine Implementierung. Andererseits haben konkrete Klassen immer eine vollständige Implementierung ihres Verh altens. 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 enth alten, konkrete Klassen jedoch nicht. Wenn eine abstrakte Klasse erweitert wird, werden alle Methoden (sowohl abstrakte als auch konkrete) geerbt. Die geerbte Klasse kann beliebige oder alle Methoden implementieren. Wenn nicht alle abstrakten Methoden implementiert sind, wird diese Klasse ebenfalls zu einer abstrakten Klasse.

Empfohlen: