抽象メソッドは実装を提供せず、派生クラスにメソッドのオーバーライドを強制します。抽象クラスの下で宣言されます。抽象メソッドにはメソッド定義のみが存在します。
仮想メソッドには実装があり、抽象メソッドとは異なり、抽象クラスと非抽象クラスの両方に存在できます。これにより、派生クラスにオーバーライドするオプションが与えられます。
virtual キーワードは、メソッド、プロパティ、インデクサー、またはイベントを変更する場合に便利です。クラス内で関数を定義し、その関数を継承クラスに実装する場合は、仮想関数を使用できます。仮想関数は、継承されたクラスごとに異なる実装を持つことができ、これらの関数の呼び出しは実行時に決定されます。
以下は仮想関数です -
public virtual int area() { }
次の例は、仮想関数の使用方法を示しています -
リアルタイム デモンストレーション
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
C# の抽象キーワードは、抽象クラスと抽象関数に使用されます。 C# の抽象クラスには、抽象メソッドと非抽象メソッドが含まれます。
以下は、C# の抽象クラスの抽象関数の例です。 -
ライブ デモンストレーション
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
以上がC# の仮想関数と抽象関数の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。