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.
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() { }
L'exemple suivant montre comment utiliser une fonction virtuelle -
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(); } } }
Rectangle class area Area: 70 Triangle class area: Area: 25
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# -
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(); } }
Bus Car Motorcycle
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!