虚方法有一个实现,与抽象方法不同,它可以存在于抽象类和非抽象类中。它为派生类提供了重写它的选项。
虚拟函数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 areaarea: 70triangle class area:area: 25
抽象函数c#中的abstract关键字用于抽象类和抽象函数。 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(); }}
输出buscarmotorcycle
以上就是c# 中的虚函数和抽象函数有什么区别?的详细内容。
