Abstract in CSharp
- Home
- Tutorials
- C
- Der Ultimative C# Kurs - Hier wirst Du zum CSharp Pro
- Abstract in CSharp
Dieses Video ist nicht verfügbar
Dieses Video steht nur eingeschriebenen Nutzern zur Verfügung.
Jetzt Kurs kaufen
In diesem Artikel behandeln wir den Begriff Abstract in CSharp und damit was wir damit machen können.
Bei abstract handelt es sich um einen Modifizierer . Der abstract-Modifizierer kann für Klassen, Funktionen, Eigenschaften, Indexer und Ereignisse verwendet werden. Wenn eine Funktion oder ein Interface mit dem Modifizierer abstract gekennzeichnet ist, dann muss die implementierende Klasse auch als abstract deklariert werden. Wenn eine Klasse mit abstract gekennzeichnet wird, dann ist es nicht möglich Objekte von ihr anzulegen.
Eine von einer abstrakten Klasse erbende Subklasse muss alle abstrakten Funktionen der Superklasse vollständig implementieren, sonst muss sie auch als abstract deklariert werden. Anders als bei einem Interface kann eine abstrakte Klasse auch implementierte Funktionen und Attribute, die nicht als static oder final deklariert wurden, beinhalten. Sollte man also keine Implementierung bei einer abstrakten Klasse durchführen, macht es mehr Sinn diese als Interface zu deklarieren.
Beispiel für Abstract in CSharp
abstract class Auto{
int geschwindigkeit;
abstract void fahre();
}
Die Klasse Auto beinhaltet die abstrakte Funktion fahre. Da diese Methode mit abstract gekennzeichnet ist, besitzt sie keinen Funktionsrumpf. Der Funktionskopf wird direkt durch ein Semikolon beendet. Wenn eine Funktion in einer Klasse abstract ist, muss auch die Klasse selbst abstract sein. Wenn jedoch die Klasse abstract ist, müssen die Funktionen der Klasse nicht zwingend abstract sein.
Warum hat die Funktion fahre() keinen Funktionsrumpf?! Das liegt daran, dass unsere Klasse Auto in diesem Fall Abstract ist, und somit kein Objekt von ihr erstellt werden darf. Wir wissen jedoch auch, dass es sich um eine Superklasse handelt. Die Funktion fahre() muss in den Subklassen vorhanden sein und einen Funktionsrumpf erhalten.
public class BMW : Auto
{
public void fahre(){
Console.WriteLine("Ich fahre einen BMW!");
}
}
Ebenso muss die Funktion fahre() in der Subklasse Audi einen Funktionsrumpf erhalten.
public class Audi {
public void fahre() {
Console.WriteLine("Ich fahre einen Audi!");
}
}
Außerdem müssen wir berücksichtigen, dass die Zugriffsrechte auf die Funktion in der Subklasse identisch mit denen der Superklasse sein müssen. Wenn eine Funktion in der Superklasse also folgendermaßen erzeugt wird...
void funktion();
..., dann darf sie in der Subklasse nicht plötzlich ein public davor stehen haben.
Abstrakte Klassen weisen die folgenden Funktionen auf:
- Eine abstrakte Klasse darf nicht instanziiert werden.
- Eine abstrakte Klasse darf abstrakte Methoden und Accessoren enthalten.
- Es ist nicht möglich, eine abstrakte Klasse unter Verwendung des sealed (C#-Referenz)-Modifizierers zu ändern, da die beiden Modifizierer entgegengesetzte Bedeutungen haben. Der sealed-Modifizierer verhindert, dass eine Klasse geerbt wird, und der abstract-Modifizierer erfordert, dass eine Klasse geerbt wird.
- Eine nicht abstrakte Klasse, die von einer abstrakten Klasse abgeleitet wurde, muss Implementierungen aller geerbten abstrakten Methoden und Accessoren enthalten.
Nächste
Interface in CSharp
Der Ultimative C# Kurs - Hier wirst Du zum CSharp Pro
-
So holst du das meiste aus dem Kurs
-
Lektion1.1
-
Lektion1.2
-
Lektion1.3
-
-
Deine erste C# Anwendung und Übersicht zu Visual Studio
-
Lektion2.1
-
Lektion2.2
-
Lektion2.3
-
-
Datentypen und Variablen
-
Lektion3.1
-
Lektion3.2
-
Lektion3.3
-
Lektion3.4
-
Lektion3.5
-
-
Funktionen / Methoden und wie sie einem das Leben vereinfachen
-
Lektion4.1
-
Lektion4.2
-
Lektion4.3
-
Lektion4.4
-
-
Benutzereingabe für unsere Programme verwenden
-
Lektion5.1
-
-
Entscheidungen Treffen
-
Lektion6.1
-
Lektion6.2
-
Lektion6.3
-
Lektion6.4
-
Lektion6.5
-
Lektion6.6
-
Lektion6.7
-
Lektion6.8
-
-
Schleifen (Loops) und wie man etwas automatisiert
-
Lektion7.1
-
Lektion7.2
-
Lektion7.3
-
Lektion7.4
-
Lektion7.5
-
Lektion7.6
-
Lektion7.7
-
-
Objektorientierte Programmierung (OOP) und Klassen
-
Lektion8.1
-
Lektion8.2
-
Lektion8.3
-
Lektion8.4
-
Lektion8.5
-
Lektion8.6
-
Lektion8.7
-
Lektion8.8
-
Lektion8.9
-
Lektion8.10
-
Lektion8.11
-
-
Arrays / Felder
-
Lektion9.1
-
Lektion9.2
-
Lektion9.3
-
Lektion9.4
-
Lektion9.5
-
Lektion9.6
-
-
ArrayList
-
Lektion10.1
-
Lektion10.2
-
Lektion10.3
-
Lektion10.4
-
Lektion10.5
-
-
Vererbung / Inheritance und noch mehr zu OOP
-
Lektion11.1
-
Lektion11.2
-
Lektion11.3
-
Lektion11.4
-
-
Polymorphie und noch mehr zu OOP
-
Lektion12.1
-
Lektion12.2
-
Lektion12.3
-
Lektion12.4
-
Lektion12.5
-
Lektion12.6
-
-
Debugging und Try and Catch
-
Lektion13.1
-
Lektion13.2
-
-
Mit Dateien Arbeiten
-
Lektion14.1
-
Lektion14.2
-
Lektion14.3
-
Beliebte Kurse
Die Java 11 Masterclass - Werde zum Profi-Entwickler!
Werde zum Entwickler mit der Java 11 Masterclass! Starte in...
19,99€
Spiele entwickeln mit Unity 3D – Erstelle eigene Games in C# - Starter
Willkommen zum kostenlosen Teil des Kurses: "Spiele entwickeln mit Unity...
Kostenlos
Werde zum iOS 11 & Swift Entwickler in 6 Wochen - Starter
Willkommen zum kostenlosen Teil des Kurses: "Werde zum iOS 11...
Kostenlos