Unterschied zwischen abstrakter Klasse und Betonklasse

Anonim

Abstrakte Klasse vs. Betonklasse

Die meisten modernen objektorientierten Programmiersprachen wie Java und C # sind klassenbasiert. Sie erreichen die objektorientierten Konzepte wie Verkapselung, Vererbung und Polymorphie durch die Verwendung von Klassen. Klassen sind eine abstrakte Darstellung von Objekten der realen Welt. Klassen können entweder konkret oder abstrakt sein, abhängig vom Grad der Implementierung ihrer Methodenfunktionalitäten. Eine konkrete Klasse implementiert alle ihre Methoden vollständig. Eine abstrakte Klasse kann als eine begrenzte Version einer regulären (konkreten) Klasse betrachtet werden, in der sie teilweise implementierte Methoden enthalten kann. Normalerweise werden konkrete Klassen als (nur) Klassen bezeichnet.

Was ist die Betonklasse?

Die Standardklasse ist eine konkrete Klasse. Mit dem Schlüsselwort class definieren Sie Klassen (zB in Java). Und normalerweise werden sie einfach als Klassen bezeichnet (ohne das Adjektiv Beton). Konkrete Klassen stellen die konzeptuelle Darstellung von Objekten der realen Welt dar. Klassen haben Eigenschaften, die als Attribute bezeichnet werden. Attribute sind 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 erfolgt die Kapselung, indem die Attribute privat gemacht werden, während öffentliche Methoden erstellt werden, die zum Zugriff auf diese Attribute verwendet werden können. Ein Objekt ist die Instanz einer Klasse. Durch Vererbung kann der Benutzer Klassen (Unterklassen genannt) aus anderen Klassen (Super-Klassen genannt) erweitern. Der Polymorphismus erlaubt es dem Programmierer, ein Objekt einer Klasse anstelle eines Objekts seiner Superklasse zu ersetzen. Typischerweise werden die in der Problemdefinition gefundenen Substantive direkt zu Klassen im Programm. Und ähnlich werden Verben zu Methoden. Öffentlich, privat und geschützt sind die typischen Zugriffsmodifizierer für Klassen.

Was ist abstrakte Klasse?

Abstrakte Klassen werden mit dem Schlüsselwort Abstract (zB in Java) deklariert. Normalerweise können Abstrakt-Klassen, die auch als abstrakte Basis-Klassen (ABC) bezeichnet werden, 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, wird sie zu einer konkreten 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 der Unterschied zwischen abstrakter Klasse und Betonklasse?

Abstrakte Klassen haben normalerweise eine partielle oder keine Implementierung. Auf der anderen Seite haben konkrete Klassen immer die volle Umsetzung ihres Verhaltens. Im Gegensatz zu konkreten Klassen können abstrakte Klassen nicht instanziiert werden. Deshalb müssen abstrakte Klassen erweitert werden, um sie nutzbar zu machen. Abstrakte Klassen können abstrakte Methoden enthalten, aber konkrete Klassen können dies nicht. Wenn eine abstrakte Klasse erweitert wird, werden alle Methoden (sowohl abstrakt als auch konkret) vererbt. Die geerbte Klasse kann alle oder alle Methoden implementieren. Wenn alle abstrakten Methoden nicht implementiert sind, wird diese Klasse auch zu einer abstrakten Klasse.