Fonction abstraite vs fonction virtuelle en C#
Ce tutoriel comparera la fonction abstraite et la fonction virtuelle en C#.
Fonction abstraite en C#
Une fonction abstraite n’a pas de définition d’elle-même en C#. Cela signifie que chaque classe enfant doit remplacer la fonction abstraite et fournir sa propre définition de la fonction abstraite. Une fonction abstraite ne peut être déclarée qu’à l’intérieur d’une classe abstraite. Le mot-clé abstract
est utilisé pour créer des classes et des fonctions abstraites en C#. L’exemple de code suivant nous montre comment créer une fonction abstraite avec le mot clé abstract
en C#.
using System;
namespace abstract_vs_virtual {
public abstract class parentClass {
public abstract void name();
}
class Program : parentClass {
public override void name() {
Console.WriteLine("This is Child Class");
}
static void Main(string[] args) {
Program p = new Program();
p.name();
}
}
}
Production:
This is Child Class
Nous avons créé une classe abstraite parentClass
et déclaré une fonction abstraite name
dans la classe parentClass
. Nous avons hérité de la classe Program
de la parentClass
et remplacé la fonction name
. Dans la fonction main
, nous initialisons une instance de la classe Program
et appelons la fonction name
.
Fonction virtuelle en C#
Une fonction virtuelle a sa propre définition, mais elle permet également aux classes enfants de la remplacer et d’avoir leur propre définition de la même fonction. Le mot-clé virtual
est utilisé pour spécifier qu’une fonction est une fonction virtuelle en C#. L’exemple de code suivant nous montre comment créer une fonction virtuelle en C#.
using System;
namespace abstract_vs_virtual {
public class parentClass {
public virtual void name() {
Console.WriteLine("This is the Parent Class");
}
}
class Program : parentClass {
static void Main(string[] args) {
Program p = new Program();
p.name();
parentClass pc = new parentClass();
pc.name();
}
}
}
Production:
This is the Parent Class This is the Parent Class
Dans le code ci-dessus, nous avons créé une classe parentClass
et défini une fonction virtuelle name()
à l’intérieur de la classe parentClass
. Nous avons alors hérité de la classe Program
de la parentClass
et n’avons pas remplacé la fonction name()
à l’intérieur de la classe Program
. Dans la fonction principale, nous avons créé des instances à la fois de la classe Program
et de la parentClass
et avons appelé la fonction name()
avec les deux instances. L’appel de fonction p.name()
nous a donné la sortie This is the Parent Class
car il n’y a pas de définition de la fonction name()
dans la classe Program
.
Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.
LinkedIn