Peamised erinevused: abstraktsed meetodid on meetodid, mis on deklareeritud, kuid ei ole rakendatud. Tüüpipõhise polümorfismi rakendamiseks kasutatakse virtuaalseid meetodeid. Tuletatud klassil on paindlikkus baasklassi virtuaalse meetodi uuesti rakendamisel, kasutades märksõna „ülekirjutamine”.
Näiteks -
avalik abstraktne klassinäideAb AbstractClass
{
avalik abstraktne void exampleabstractMethod ();
avalik virtuaalne tühimik, mitteAb AbstractMethod ()
{
Console.WriteLine ("Rakendamine on määratletud meetodis");
}
class normalNonAb AbsztraktClass: exampleAb AbsztraktClass
{
avalik ülekirjutamine tühine exampleabstractMethod ()
{
Console.WriteLine (klassi näiteAbstractClassi eksampleab AbsztraktMetodi ülekirjutamine);
}
}
klassi baas
{
avalik virtuaalne tühimik Test ()
{
Console.WriteLine ("Base.Test");
}
}
klass Tuletatud: Base
{
avaliku ülekande tühistamine Test ()
{
Console.WriteLine ("Derived.Test");
}
}
Tüüpipõhise polümorfismi rakendamiseks kasutatakse virtuaalseid meetodeid. Tuletatud klassil on paindlikkus baasklassi virtuaalse meetodi taaskäivitamisel, kasutades ülekirjutamise märksõna. Nii virtuaalset kui ka abstraktset ei saa kasutada koos staatiliste või virtuaalsete või ülekirjutustega.
Virtuaalse ja abstraktse meetodi võrdlus:
Virtuaalne meetod | Abstraktne meetod | |
Määratlus | Tüüpipõhise polümorfismi rakendamiseks kasutatakse virtuaalseid meetodeid. | Abstraktsed meetodid on meetodid, mis on deklareeritud, kuid ei ole rakendatud. |
Rakendamine | Jah, võib olla rakendamine | Ei, ei saa mingit rakendamist rakendada |
Vajadus tühistada | Ei ole kohustuslik | Kohustuslik |
Märksõna, mida kasutatakse selle eristamiseks teistest meetoditest | Virtuaalne | Abstraktne |
Klass | Virtuaalset meetodit võib klassifitseerida. | Abstraktset meetodit sisaldavat klassi ei ole võimalik kohelda. Seda saab pärida ainult. |
Reguleerimisala | Virtuaalse meetodi ulatus ainult liikmetele. | Abstraktse meetodi ulatus liikmete ja klasside suhtes. |
Teostatav meetod (objekt-baasi klassi tüüp) | Vanemate rakendamist kutsutakse ainult juhul, kui konkreetses klassis ei rakendata. | Konkreetne rakendamine |
Teostatav meetod (objekt-konkreetne klassitüüp) | Konkreetne rakendamine | Konkreetne rakendamine |