Abstrakte Methoden stellen keine Implementierung bereit, sie zwingen abgeleitete Klassen, die Methode zu überschreiben. Es wird unter der abstrakten Klasse deklariert. Abstrakte Methoden haben nur Methodendefinitionen. Virtuelle Methoden haben eine Implementierung. Im Gegensatz zu abstrakten Methoden können sie sowohl in abstrakten als auch in nicht abstrakten Klassen existieren. Es gibt abgeleiteten Klassen die Möglichkeit, es zu überschreiben.
Virtuelle Funktionen
Das Folgende ist eine virtuelle Funktion -
public virtual int area() { }
Das folgende Beispiel zeigt, wie eine virtuelle Funktion verwendet wird -
Beispiel
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(); } } }
Ausgabe
Rectangle class area Area: 70 Triangle class area: Area: 25
Hier ist ein Beispiel einer abstrakten Funktion in einer abstrakten Klasse in C# –
Beispiel
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(); } }
Ausgabe
Bus Car Motorcycle
Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen virtuellen Funktionen und abstrakten Funktionen in C#?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!