C# virtual是虚拟的含义,在C#语言中,默认情况下类中的成员都是非虚拟的,通常将类中的成员定义成虚拟的,表示这些成员将会在继承后重写其中的内容。virtual关键字能修饰方法、属性、索引器以及事件等,用到父类的成员中。
使用 virtual 关键字修饰属性和方法的语法形式如下:
public virtual 数据类型 属性名{get; set; }
访问修饰符 virtual 返回值类型方法名
{
语句块;
}
需要注意的是,virtual关键字不能修饰使用static修饰的成员。此外,virtual关键字既可以添加到访问修饰符的后面,也可以添加到访问修饰符的前面,但实际应用中习惯将该关键字放到访问修饰符的后面。子类继承父类后能重写父类中的成员,重写的关键字是override。所谓重写是指子类和父类的成员定义一致,仅在子类中增加了override关键字修饰成员。
例如在父类中有一个求长方形面积的方法,方法定义如下
publie int Area(int x, int y)
{
return x * y
}
在子类中重写该方法的代码如下
public override int Area(int x,int y)
{
语句块;
return 整数类型的值;
}
在子类中重写父类中的方法后能改变方法体中的内容,但是方法的定义不能改变
为了减少重复的代码,在每个类中省略了属性部分的定义内容,仅保留 Print 方法部分的内容,实现 的代码如下
class Person
{
public virt