Definition
Eine Abstrakte Klasse ist eine Klasse, von der nur geerbt werden kann. Das bedeutet, dass man von Abstrakten Klassen keine Objekte instantiieren kann. Deshalb werden sie auch oft Basisklasse genannt. Ausserdem gehen sie noch einen Schritt weiter als die Interfaces. Auch sie geben in gewisser Weise die Form vor, die die erbende Klasse annimmt.
Abgrenzung
Im Gegensatz zum Interface, kann (muss aber nicht) in der Abstrakten Klasse aber z.B. eine Funktion vollständig auscodiert werden (während sie im Interface immer nur eine leer Hülle darstellt).
Abstrakte Methoden
Hat eine Methode keinen Methoden-Körper, wird sie als Abstrakte Methode bezeichnet. Sie kann von der erbenden Klasse später überschrieben werden.
Beispiel für die Definition einer Abstrakten Klasse:
class abstract worker
{
// Properties
public string name { get; set; }
public double salary { get; set; }
// Method
public abstract void work();
}
In der erbenden Klasse wird dann die Methode work ausformuliert:
class plummer : worker
{
public override void work
{
Console.Writeline("The plummer works");
}
}