Ključna razlika: Sažetak metode su metode koje su deklarirane, ali nemaju implementaciju. Za implementaciju polimorfizma temeljenog na tipu koriste se virtualne metode. Izvedena klasa ima fleksibilnost ponovnog implementiranja virtualne metode osnovne klase korištenjem ključne riječi 'override'.
Na primjer -
javna apstraktna klasa exampleAbstractClass
{
javni sažetak void exampleabstractMethod ();
public virtual void nonAbstractMethod ()
{
Console.WriteLine ("Implementacija je definirana u metodi");
}
klasa normalNonAbstractClass: exampleAbstractClass
{
javno nadjačavanje void exampleabstractMethod ()
{
Console.WriteLine ("Nadjačavanje exampleabstractMethod klase exampleAbstractClass");
}
}
klasa Base
{
javni virtualni void Test ()
{
Console.WriteLine ( "Base.Test");
}
}
klasa Izvedeno: Baza
{
javno poništavanje nevažećih Test ()
{
Console.WriteLine ( "Derived.Test");
}
}
Za implementaciju polimorfizma temeljenog na tipu koriste se virtualne metode. Izvedena klasa ima fleksibilnost ponovnog implementiranja virtualne metode osnovne klase pomoću ključne riječi za nadjačavanje. I virtualni i apstraktni ne mogu se koristiti zajedno sa statičkim ili virtualnim ili nadjačavajućim modifikatorima.
Usporedba virtualne i apstraktne metode:
Virtualna metoda | Abstraktna metoda | |
definicija | Za implementaciju polimorfizma temeljenog na tipu koriste se virtualne metode. | Apstraktne metode su metode koje su deklarirane, ali nemaju implementaciju. |
izvršenje | Da, može imati implementaciju | Ne, ne može imati nikakvu implementaciju |
Potrebno je poništiti | Nije obavezno | obavezan |
Ključna riječ koja se koristi za razlikovanje od drugih vrsta metoda | Virtualan | Sažetak |
klasa | Virtualna metoda koja sadrži klasu može se instancirati. | Klasa koja sadrži apstraktnu metodu ne može se instancirati. Može se samo naslijediti. |
djelokrug | Područje virtualne metode samo članovima. | Područje apstraktne metode članovima i razredima. |
Način izvršenja (tip klase objektne baze) | Nadređena implementacija bit će pozvana samo u slučaju kada u konkretnoj klasi nije provedena implementacija. | Konkretna provedba |
Način izvođenja (objekt-betonski tip klase) | Konkretna provedba | Konkretna provedba |