您的位置:首页 > 编程语言 > C#

C#基础知识四之override和new的区别

2016-04-26 13:35 1136 查看

override

override是派生类用来重写基类方法的。调用的派生类方法,如需调用基类方法用base关键字

override不能重写非虚方法或静态方法。

override重写必须用abstract、override、virtrual修饰的方法。

new

new 是派生类用来隐藏基类方法的,在派生类中看不到基类方法,但调用的还是基类的方法。

如果在派生类中要隐藏基类方法而不用new关键字,编译时会出现一个警告,提示如果是要隐藏基类中的方法,请使用new关键字。

new可以隐藏基类中的普通方法也可以是虚方法。

如果在派生类中用private来修饰new 方法,那么只在该派生类中隐藏了基类中的方法,在该派生类之外,相当于没有隐藏基类中的方法;

如果在派生类中隐藏了基类中的方法,在该派生类的派生类中,将延续对该派生类对基类方法的隐藏。

public class Program
{
static void Main(string[] args)
{
A a = new A();
a.Test();
B b = new B();
b.Test();
A c = new B();
c.Test();
A d = new C();
d.Test();
Console.ReadLine();
}
}
public class A
{

public virtual void Test()
{
Console.WriteLine("A Test()");

}

}
public class B : A
{
private new void Test()
{
Console.WriteLine("b Test()");

}
}
public class C : B
{

public override void Test()
{
Console.WriteLine("C Test()");
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: