Klíčový rozdíl: Abstraktní metody jsou metody, které jsou deklarovány, ale nemají žádnou implementaci. Virtuální metody se používají pro implementaci typového polymorfismu. Odvozená třída má flexibilitu re-implementace virtuální metody základní třídy pomocí klíčového slova "override".
Například -
veřejná abstraktní třída exampleAbstractClass
{{
veřejná abstraktní prázdná exampleabstractMethod ();
veřejná virtuální neplatnost nonAbstractMethod ()
{{
Console.WriteLine ("Implementace je definována v metodě");
}}
třída normalNonAbstractClass: exampleAbstractClass
{{
public override void exampleabstractMethod ()
{{
Console.WriteLine ("Přepsání příkladuabstrakt Metoda tříd exampleAbstractClass");
}}
}}
třída základny
{{
public virtual void Test ()
{{
Console.WriteLine ("Base.Test");
}}
}}
třída odvozená: Base
{{
public override void Test ()
{{
Console.WriteLine ("Derived.Test");
}}
}}
Virtuální metody se používají pro implementaci typového polymorfismu. Odvozená třída má flexibilitu re-implementace virtuální metody základní třídy pomocí klíčového slova override. Obě virtuální a abstraktní nelze použít společně se statickými nebo virtuálními modifikacemi.
Srovnání mezi virtuální a abstraktní metodou:
Virtuální metoda | Abstraktní metoda | |
Definice | Virtuální metody se používají pro implementaci typového polymorfismu. | Abstraktní metody jsou metody, které jsou deklarovány, ale nemají žádnou implementaci. |
Implementace | Ano, může mít implementaci | Ne, nemůže mít žádnou implementaci |
Potřebujete být přepsán | Není povinné | Povinný |
Klíčové slovo používané k jeho odlišení od jiných typů metod | Virtuální | Abstraktní |
Třída | Třída obsahující virtuální metodu může být instancována. | Třída obsahující abstraktní metodu nemůže být instancí. Může být zděděno pouze. |
Rozsah | Rozsah virtuální metody pouze pro členy. | Rozsah abstraktní metody pro členy a třídy. |
Metoda, která má být provedena (typ objektu typu-base) | Nadřazená implementace bude volána pouze v případě, že v konkrétní třídě není provedena žádná implementace. | Konkrétní implementace |
Metoda, která má být provedena (typ objektu typu beton) | Konkrétní implementace | Konkrétní implementace |