Was ist abstrakte Klasse in C#? | Definition, Eigenschaften und Beispiele

Der Begriff Abstraktion bezieht sich in der Programmierung auf das Verbergen unnötiger, wenn auch sehr wichtiger Informationen und das Sichtbarmachen von nur bestimmten Schlüssel- oder erforderlichen Informationen für den Benutzer. Möglich wird dies durch die Verwendung abstrakter Klassen.

Die abstrakte Klasse in C# ist im Wesentlichen eine Klasse, die die Erstellung von Objekten nicht zulässt. 'Abstract' ist hier ein Schlüsselwort oder ein Modifizierer, der bewirkt, dass diese bestimmte Klasse oder Methode abstrakt oder eingeschränkt ist. Auf eine abstrakte Klasse kann nur durch Vererbung von einer anderen Klasse zugegriffen werden.

Eigenschaften und Komponenten der abstrakten Klasse in C#

Es gibt bestimmte Faktoren, die vorhanden sein müssen, damit eine abstrakte Klasse initiiert oder auf sie zugegriffen wird. Sie wurden wie folgt aufgelistet.

  1. Eine abstrakte Klasse wird verwendet, um eine Basisklasse zu erstellen, auf die von mehreren abgeleiteten Klassen gemeinsam zugegriffen werden kann. Um eine abstrakte Klasse zu verwenden oder zu implementieren, müssen Programmierer zunächst eine abgeleitete Klasse erstellen.
  2. Die abstrakte Klasse muss daher von Unterklassen vererbt werden, die die Funktion sogar überschreiben können.
  3. Jede abstrakte Klasse benötigt mindestens eine abstrakte Methode.

Beispiel einer abstrakten Klasse in C#

Da der Mechanismus kompliziert und nur für diejenigen verständlich ist, die mit der Programmiersprache vertraut sind, ist es besser, mit einem sehr einfachen Beispiel zu beginnen, das das Konzept erklärt.

Angenommen, es existiert eine Klasse 'Baum' mit einer existierenden entworfenen Methode, die als 'Typ' bekannt ist. Nichts anderes ist definiert und es werden keine weiteren speziellen Informationen bereitgestellt – man kennt weder die Baumart noch die möglichen Arten.

Wenn ein bestimmtes Beispiel für einen Baum verfügbar ist, wird durch die Vererbung der Basisklasse Tree eine separate Klasse erstellt. Die Idee ist, dass die neue Klasse, beispielsweise Pine oder Oak, das Konstrukt oder die Definition der Basisklasse, also Tree, nicht ändern kann. Es muss eine eigene Klasse erstellen, die von der Klasse Tree abgeleitet ist, und eine andere Methode definieren, die von der Basis geerbt wird.

Vorteile der abstrakten Klasse in C#

  1. Während Unterklassen eine abstrakte Klasse entweder implementieren oder überschreiben können, können bestimmte Modifikationen vorgenommen werden, die es erforderlich machen, dass eine bestimmte Funktion unbedingt implementiert werden muss.
  2. Somit besteht ein hohes Maß an Flexibilität beim Entwurf einer abstrakten Klasse, welche Methoden zwingend implementiert werden müssen.
  3. Der Programmierer kann wählen, wie viele abstrakte Methoden er in einer abstrakten Klasse haben möchte. Es ist auch möglich, den Code zu schreiben, ohne abstrakte Methoden einzubeziehen.
  4. Eine abstrakte Klasse muss nur einmal definiert werden und kann fortan beliebig oft aufgerufen oder daraus abgeleitet werden.
  5. Eine abstrakte Klasse ist sehr nützlich, wenn es eine Menge von Klassen gibt, die einen gewissen Grad an Gemeinsamkeit aufweisen, sich aber in ihrer Implementierung von der abstrakten Klasse unterscheiden.

Nachteile der abstrakten Klasse in C#

  1. Eine abstrakte Klasse kann nur dann zur Klassenhierarchie hinzugefügt werden, wenn noch keine abstrakten Klassen vorhanden sind.
  2. Objekte jeder abstrakten Klasse können nur referenziert, niemals erstellt werden.
  3. Obwohl abstrakte Klassen nicht instanziiert werden können, erlaubt es nicht die Verwendung von statischen Variablen oder Methoden.

Verweise

  1. https://books.google.co.in/books?hl=en&lr=&id=UbJa11wLcqYC&oi=fnd&pg=PA125&dq=Abstract+Class+in+C%23&ots=y9lmboLlHj&sig=kk5oYAJSHpmo-FyHphcAlkUh4cc&redir_esc=y#v=onepage&q=Abstract%20Class%20in%20C%23&f=false
  2. https://books.google.co.in/books?hl=en&lr=&id=-w9ftEtwPGwC&oi=fnd&pg=PP8&dq=Abstract+Class+in+C%23&ots=XXCx6-5nlm&sig=CYfs0myaTnm1anSz4QUGcZ65uS4&redir_esc=y#v=onepage&q=Abstract%20Class%20in%20C%23&f=false
x
2D vs 3D