Huvudskillnad: Abstrakta metoder är de metoder som deklareras men saknar genomförande. Virtuella metoder används för en implementering av den typbaserade polymorfismen. Den härledda klassen har flexibiliteten att åter implementera den virtuella metoden för basklassen genom att använda sökordet "åsidosätt".
Till exempel -
offentligt abstrakt klassexempelAbstractClass
{
offentligt abstrakt tomt exempelabstraktMetod ();
allmän virtuell void nonAbstractMethod ()
{
Console.WriteLine ("Implementering definieras i metoden");
}
klass normalNonAbstractClass: exampleAbstractClass
{
offentlig åsidosätt tomt exempelabstraktMetod ()
{
Console.WriteLine ("Överträffa exempletabstractMethod i klassexempletAbstractClass");
}
}
klassbasen
{
offentligt virtuellt tomrumstest ()
{
Console.WriteLine ( "Base.test");
}
}
klass avledd: bas
{
offentligt åsidosätt tomtest ()
{
Console.WriteLine ( "Derived.Test");
}
}
Virtuella metoder används för en implementering av den typbaserade polymorfismen. Den härledda klassen har flexibiliteten att re-implementera den virtuella metoden för basklassen genom att använda överstyrningsordet. Både virtuellt och abstrakt kan inte användas tillsammans med statiska eller virtuella eller överstyrda modifierare.
Jämförelse mellan virtuell och abstrakt metod:
Virtuell metod | Abstrakt metod | |
Definition | Virtuella metoder används för en implementering av den typbaserade polymorfismen. | Sammanfattning metoder är de metoder som deklareras men har ingen genomförande. |
Genomförande | Ja, kan ha genomförande | Nej, kan inte ha någon implementering |
Behöver övervägas | Inte obligatorisk | Obligatorisk |
Nyckelord används för att skilja det från andra typer av metoder | Virtuell | Abstrakt |
Klass | Klass som innehåller virtuell metod kan ordnas. | Klass som innehåller abstrakt metod kan inte instansieras. Det kan bara vara ärftligt. |
Omfattning | Virtuell metod är endast omfattande för medlemmar. | Sammanfattning metodens räckvidd till medlemmar och klasser. |
Metod som ska utföras (objekt-bas klass klass) | Föräldraimplementering kommer endast att ringas om det inte finns något genomförande i konkreta klassen. | Betongimplementering |
Metod som ska utföras (objektbetongklasstyp) | Betongimplementering | Betongimplementering |