virtual 关键字用于修饰方法、属性、索引器或事件声明,并使它们可以在派生类中被重写。 通常我们叫它虚方法、虚属性。
用法演示:
修饰属性
class Apple
{
public string name { get; set; }
}
//继承基类Apple
class Orange : Apple
{
//我想重写属性name,结果报错
public override string name { get; set; }
}
使用virtual修饰
class Apple
{
//加关键字virtual
public virtual string name { get; set; }
}
//继承基类Apple
class Orange : Apple
{
public override string name { get; set; }
}
有人会说,我不写override,也不用virtual修饰不会报错啊
会有警告,如果是有意隐藏,请使用关键字 new。
接下来是修饰方法了
class Program
{
static void Main(string[] args)
{
Orange o = new Orange();
}
class Apple
{
public void eat() {
Console.WriteLine("吃苹果");
}
}
//继承基类Apple
class Orange : Apple
{
public void eat()
{
Console.WriteLine("吃橘子");
}
}
}
定义两个类
一个是苹果,一个是橘子,橘子继承苹果,这样写没错,同样会有警告
class Program
{
static void Main(string[] args)
{
Orange o = new Orange();
}
class Apple
{
public virtual void eat() {
Console.WriteLine("吃苹果");
}
}
//继承基类Apple
class Orange : Apple
{
public override void eat()
{
Console.WriteLine("吃橘子");
}
}
}
同样加上virtual或者使用new
public new void eat()
{
Console.WriteLine("吃橘子");
}