C# 中,派生类可以包含与基类方法同名的方法。
基类方法必须定义为 virtual。
如果派生类中的方法前面没有 new 或 override 关键字,则编译器将发出警告,该方法将有如存在 class="keyword">new 关键字一样执行操作。
如果派生类中的方法前面带有 new 关键字,则该方法被定义为独立于基类中的方法。
如果派生类中的方法前面带有 override 关键字,则派生类的对象将调用该方法,而不是调用基类方法。
可以从派生类中使用 base 关键字调用基类方法。
override、virtual 和 new 关键字还可以用于属性、索引器和事件中。
默认情况下,C# 方法为非虚方法
举个简单列子来看看吧
public class A
{
public virtual void Out()
{
Console.WriteLine("come from parent");
}
}
public class B : A
{
public override void Out()//注意这个地方的override
{
Console.WriteLine("come from child");
}
}
//使用的时候
A a = (b)new A();//或者A a = new B();
a.Out();//这个时候会输出come from child
如果把B类的override变成new
public class B : A
{
public new void Out()//注意这个地方的new,因为使用了new就相当于子类B定义了仅仅们名字和A相同的方法,但是他们之间没有任何关系。所以A调用Oout的时候还是A类自己的Out方法
{
Console.WriteLine("come from child");
}
}
A a = (b)new A();
a.Out();//这个时候会输出come from parent;
本文使用Blog_Backup未注册版本导出,请到soft.pt42.com注册。