Belangrijkste verschil: abstracte methoden zijn de methoden die worden gedeclareerd maar geen enkele implementatie hebben. Virtuele methoden worden gebruikt voor een implementatie van het type-gebaseerde polymorfisme. De afgeleide klasse heeft de flexibiliteit om de virtuele methode van de basisklasse opnieuw te implementeren met behulp van het sleutelwoord 'negeren'.

Bijvoorbeeld -
openbare abstracte klasse exampleAbstractClass
{
public abstract void exampleabstractMethod ();
openbare virtuele leegte nonAbstractMethod ()
{
Console.WriteLine ("Implementatie is gedefinieerd in de methode");
}
class normalNonAbstractClass: exampleAbstractClass
{
openbare override void exampleabstractMethod ()
{
Console.WriteLine ("De voorbeeldbegrip Methode van de klasse exampleAbstractClass overschrijven");
}
}

klasse Base
{
openbare virtuele leegte Test ()
{
Console.WriteLine ( "Base.Test");
}
}
klasse Afgeleid: basis
{
openbare override void Test ()
{
Console.WriteLine ( "Derived.Test");
}
}
Virtuele methoden worden gebruikt voor een implementatie van het type-gebaseerde polymorfisme. De afgeleide klasse heeft de flexibiliteit om de virtuele methode van de basisklasse opnieuw te implementeren met behulp van het override-zoekwoord. Zowel virtueel als abstract kunnen niet worden gebruikt, samen met statische of virtuele of negeer modifiers.
Vergelijking tussen virtuele en abstracte methode:
Virtuele methode | Abstracte methode | |
Definitie | Virtuele methoden worden gebruikt voor een implementatie van het type-gebaseerde polymorfisme. | Abstracte methoden zijn de methoden die worden gedeclareerd maar geen enkele implementatie hebben. |
Implementatie | Ja, kan implementatie hebben | Nee, ik kan geen enkele implementatie hebben |
Moet worden overschreven | Niet verplicht | Verplicht |
Zoekwoord dat wordt gebruikt om het te onderscheiden van andere typen methoden | virtueel | Abstract |
Klasse | Klasse met virtuele methode kan worden geïnstantieerd. | Klasse met abstracte methode kan niet worden geïnstantieerd. Het kan alleen worden overgenomen. |
strekking | Virtuele methode alleen voor leden. | De reikwijdte van de abstracte methode voor leden en klassen. |
Uit te voeren methode (klasse van objectbasisklasse) | Ouderimplementatie wordt alleen aangeroepen in het geval dat er geen implementatie is in de concrete klasse. | Concrete implementatie |
Uit te voeren methode (klasse van het object-betonklasse) | Concrete implementatie | Concrete implementatie |