new作为修饰符

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()

原文地址:https://www.cnblogs.com/wuyuankun/p/3736491.html