Keskeinen ero: Tiivistelmämenetelmät ovat menetelmiä, jotka on julistettu, mutta joilla ei ole toteutusta. Virtuaalisia menetelmiä käytetään tyyppipohjaisen polymorfismin toteuttamiseen. Johdettu luokka on joustava toteuttamaan perusluokan virtuaalimenetelmä käyttämällä avainsanaa "ohittaa".
Esimerkiksi -
julkinen abstrakti luokan esimerkkiAbstraktiClass
{
julkinen abstrakti void exampleabstractMethod ();
julkinen virtuaalinen tyhjä eiAbstractMethod ()
{
Console.WriteLine ("Toteutus määritellään menetelmässä");
}
class normalNonAbstractClass: esimerkkiAbstraktiClass
{
julkinen ohitus void exampleabstractMethod ()
{
Console.WriteLine ("LuokkaesimerkinAbstraktiClass" -testauksen tarkistaminen);
}
}
luokka Base
{
julkinen virtuaalinen tyhjiötesti ()
{
Console.WriteLine ( "Base.Test");
}
}
luokka Johdettu: Base
{
julkinen ohitus tyhjä Testi ()
{
Console.WriteLine ( "Derived.Test");
}
}
Virtuaalisia menetelmiä käytetään tyyppipohjaisen polymorfismin toteuttamiseen. Johdettu luokka on joustava toteuttamaan perusluokan virtuaalimenetelmä käyttämällä ohitussanaa. Sekä virtuaalista että abstraktia ei voi käyttää staattisten tai virtuaalisten tai ohitusmodifioijien ohella.
Virtuaalisen ja abstraktin menetelmän vertailu:
Virtual Method | Tiivistelmämenetelmä | |
Määritelmä | Virtuaalisia menetelmiä käytetään tyyppipohjaisen polymorfismin toteuttamiseen. | Abstraktit menetelmät ovat menetelmiä, jotka on julistettu, mutta joilla ei ole toteutusta. |
täytäntöönpano | Kyllä, voi olla täytäntöönpanoa | Ei, ei voi olla mitään täytäntöönpanoa |
Tarve on ohitettava | Ei-pakollinen | Pakollinen |
Avainsana, jota käytetään erottamaan se muista menetelmistä | virtuaali- | Abstrakti |
luokka | Luokan sisältävä virtuaalinen menetelmä voidaan tuoda esiin. | Abstraktia menetelmää sisältävää luokkaa ei voi tuoda esiin. Se voidaan periä vain. |
laajuus | Virtuaalimenetelmän soveltamisala vain jäsenille. | Abstraktin menetelmän soveltamisala jäsenille ja luokille. |
Toteutettava menetelmä (objektityyppiluokka) | Vanhempien toteuttamista kutsutaan vain siinä tapauksessa, että konkreettisessa luokassa ei toteuteta täytäntöönpanoa. | Konkreettinen toteutus |
Toteutettava menetelmä (esine-konkreettinen luokka) | Konkreettinen toteutus | Konkreettinen toteutus |