Quelle est la différence entre les fonctions virtuelles et les fonctions abstraites en C# ?

WBOY
Libérer: 2023-08-29 10:37:05
avant
781 Les gens l'ont consulté

C# 中的虚函数和抽象函数有什么区别?

Les méthodes abstraites ne fournissent pas d'implémentation, elles forcent les classes dérivées à remplacer la méthode. Il est déclaré sous classe abstraite. Les méthodes abstraites n'ont que des définitions de méthode

Les méthodes virtuelles ont une implémentation, contrairement aux méthodes abstraites, elles peuvent exister dans des classes abstraites et non abstraites. Il donne aux classes dérivées la possibilité de le remplacer.

Fonctions virtuelles

Le mot-clé virtual est utile lors de la modification de méthodes, de propriétés, d'indexeurs ou d'événements. Vous pouvez utiliser des fonctions virtuelles lorsque vous avez défini une fonction dans une classe et que vous souhaitez implémenter cette fonction dans des classes héritées. Les fonctions virtuelles peuvent avoir différentes implémentations dans différentes classes héritées, et les appels à ces fonctions seront déterminés au moment de l'exécution.

Ce qui suit est une fonction virtuelle -

public virtual int area() { }
Copier après la connexion

L'exemple suivant montre comment utiliser une fonction virtuelle -

Exemple

Démonstration en direct

using System;

namespace PolymorphismApplication {
   class Shape {
      protected int width, height;
      public Shape( int a = 0, int b = 0) {
         width = a;
         height = b;
      }
      public virtual int area() {
         Console.WriteLine("Parent class area :");
         return 0;
      }
   }
   class Rectangle: Shape {
      public Rectangle( int a = 0, int b = 0): base(a, b) {
      }
      public override int area () {
         Console.WriteLine("Rectangle class area ");
         return (width * height);
      }
   }
   class Triangle: Shape {
      public Triangle(int a = 0, int b = 0): base(a, b) {
      }
      public override int area() {
         Console.WriteLine("Triangle class area:");
         return (width * height / 2);
      }
   }
   class Caller {
      public void CallArea(Shape sh) {
         int a;
         a = sh.area();
         Console.WriteLine("Area: {0}", a);
      }
   }
   class Tester {
      static void Main(string[] args) {
         Caller c = new Caller();
         Rectangle r = new Rectangle(10, 7);
         Triangle t = new Triangle(10, 5);

         c.CallArea(r);
         c.CallArea(t);
         Console.ReadKey();
      }
   }
}
Copier après la connexion

Sortie

Rectangle class area
Area: 70
Triangle class area:
Area: 25
Copier après la connexion

Fonction abstraite

Le mot-clé abstract en C# est utilisé pour abstrait les classes et les abstractions fonctionnent. Les classes abstraites en C# incluent des méthodes abstraites et des méthodes non abstraites.

Voici un exemple de fonction abstraite dans une classe abstraite en C# -

Example

Live Demo

using System;
public abstract class Vehicle {
   public abstract void display();
}
public class Bus : Vehicle {
   public override void display() {
      Console.WriteLine("Bus");
   }
}
public class Car : Vehicle {
   public override void display() {
      Console.WriteLine("Car");
   }
}
public class Motorcycle : Vehicle {
   public override void display() {
      Console.WriteLine("Motorcycle");
   }
}
public class MyClass {
   public static void Main() {
      Vehicle v;
      v = new Bus();
      v.display();
      v = new Car();
      v.display();
         v = new Motorcycle();
      v.display();
   }
}
Copier après la connexion

Output

Bus
Car
Motorcycle
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:tutorialspoint.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal