Hauptunterschied: Abstrakte Methoden sind die Methoden, die deklariert werden, aber keine Implementierung haben. Virtuelle Methoden werden für eine Implementierung des typbasierten Polymorphismus verwendet. Die abgeleitete Klasse hat die Flexibilität, die virtuelle Methode der Basisklasse mithilfe des Schlüsselworts 'override' erneut zu implementieren.
Zum Beispiel -
Beispiel einer öffentlichen abstrakten KlasseAbstractClass
{
öffentliche abstrakte Void beispielhaftemethode ();
public virtual void nonAbstractMethod ()
{
Console.WriteLine ("Implementierung ist in der Methode definiert");
}
Klasse normalNonAbstractClass: exampleAbstractClass
{
public override void beispielszusammenfassungMethode ()
{
Console.WriteLine ("Überschreibe die Beispielmethode der Klasse exampleAbstractClass");
}
}
Klasse Basis
{
öffentlicher virtueller void Test ()
{
Console.WriteLine ("Base.Test");
}
}
Klasse abgeleitet: Basis
{
öffentliche Überschreibung ungültig Test ()
{
Console.WriteLine ("Derived.Test");
}
}
Virtuelle Methoden werden für eine Implementierung des typbasierten Polymorphismus verwendet. Die abgeleitete Klasse bietet die Flexibilität, die virtuelle Methode der Basisklasse mithilfe des Schlüsselworts override erneut zu implementieren. Sowohl virtuell als auch abstrakt können nicht zusammen mit statischen oder virtuellen Modifizierern verwendet werden.
Vergleich zwischen virtueller und abstrakter Methode:
Virtuelle Methode | Abstrakte Methode | |
Definition | Virtuelle Methoden werden für eine Implementierung des typbasierten Polymorphismus verwendet. | Abstrakte Methoden sind die Methoden, die deklariert werden, aber keine Implementierung haben. |
Implementierung | Ja, kann implementiert werden | Nein, kann keine Implementierung haben |
Muss überschrieben werden | Nicht verpflichtend | verpflichtend |
Schlüsselwort, mit dem es von anderen Methoden unterschieden wird | Virtuell | Abstrakt |
Klasse | Klassen, die eine virtuelle Methode enthalten, können instanziiert werden. | Klasse, die eine abstrakte Methode enthält, kann nicht instanziiert werden. Es kann nur vererbt werden. |
Umfang | Gültigkeitsbereich der virtuellen Methode nur für Mitglieder. | Umfang der abstrakten Methode für Mitglieder und Klassen. |
Auszuführende Methode (Objektbasisklassentyp) | Die übergeordnete Implementierung wird nur dann aufgerufen, wenn in der konkreten Klasse keine Implementierung bereitgestellt wird. | Konkrete Umsetzung |
Auszuführende Methode (objektbetonender Klassentyp) | Konkrete Umsetzung | Konkrete Umsetzung |