Fonction abstraite vs fonction virtuelle en C#

Muhammad Maisam Abbas 16 février 2024
  1. Fonction abstraite en C#
  2. Fonction virtuelle en C#
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.

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

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

Article connexe - Csharp Function