Différence clé: les méthodes abstraites sont les méthodes déclarées mais qui n'ont aucune implémentation. Les méthodes virtuelles sont utilisées pour une implémentation du polymorphisme basé sur un type. La classe dérivée a la possibilité de réimplémenter la méthode virtuelle de la classe de base en utilisant le mot clé 'override'.
Par exemple -
classe abstraite publique exampleAbstractClass
{
public abstract void exampleabstractMethod ();
public virtual void nonAbstractMethod ()
{
Console.WriteLine ("L'implémentation est définie dans la méthode");
}
class normalNonAbstractClass: exampleAbstractClass
{
remplacement public null testpleabstractMethod ()
{
Console.WriteLine ("Redéfinition de la méthode examplepleabstract de la classe exampleAbstractClass");
}
}
classe de base
{
public void virtuel Test ()
{
Console.WriteLine ("Base.Test");
}
}
classe dérivée: Base
{
remplacement public void Test ()
{
Console.WriteLine ("Derived.Test");
}
}
Les méthodes virtuelles sont utilisées pour une implémentation du polymorphisme basé sur un type. La classe dérivée a la possibilité de ré-implémenter la méthode virtuelle de la classe de base en utilisant le mot-clé override. Les logiciels virtuels et abstraits ne peuvent pas être utilisés avec des modificateurs statiques, virtuels ou de substitution.
Comparaison entre méthode virtuelle et méthode abstraite:
Méthode virtuelle | Méthode abstraite | |
Définition | Les méthodes virtuelles sont utilisées pour une implémentation du polymorphisme basé sur un type. | Les méthodes abstraites sont les méthodes déclarées mais qui n'ont aucune implémentation. |
la mise en oeuvre | Oui, peut avoir la mise en œuvre | Non, ne peut avoir aucune implémentation |
Besoin d'être remplacé | Pas obligatoire | Obligatoire |
Mot-clé utilisé pour le distinguer des autres types de méthodes | Virtuel | Abstrait |
Classe | La méthode virtuelle contenant une classe peut être instanciée. | La classe contenant la méthode abstraite ne peut pas être instanciée. Il ne peut être hérité que. |
Portée | Portée de la méthode virtuelle aux membres uniquement. | Portée de la méthode abstraite pour les membres et les classes. |
Méthode à exécuter (type de classe objet-base) | L'implémentation parent sera appelée uniquement dans le cas où aucune implémentation n'est fournie dans la classe concrète. | Mise en œuvre concrète |
Méthode à exécuter (type de classe objet-concret) | Mise en œuvre concrète | Mise en œuvre concrète |