new 修饰符与 new 操作符是两个概念
new 修饰符用于声明类或类的成员,表示隐藏了基类中同名的成员。而new 操作符用于实例化一个类型
new 修饰符只能用于继承类,一般用于弥补基类设计的不足
new 修饰符和 override 修饰符不可同时用在一个成员上,因为这两个修饰符在含义上互相排斥
public abstract class A
{
public A()
{
Console.WriteLine('A');
}
public virtual void Fun()
{
Console.WriteLine("A.Fun()");
}
} public class B : A
{
public B()
{
Console.WriteLine('B');
} public new void Fun()
{
Console.WriteLine("B.Fun()");
} public static void Main()
{
A a = new B();
a.Fun();
while (true) ;
}
}
输出:A B A.Fun()
public abstract class A
{
public A()
{
Console.WriteLine('A');
}
public virtual void Fun()
{
Console.WriteLine("A.Fun()");
}
} public class B : A
{
public B()
{
Console.WriteLine('B');
} public override void Fun()
{
Console.WriteLine("B.Fun()");
} public static void Main()
{
A a = new B();
a.Fun();
while (true) ;
}
}
输出结果:A B B.Fun()