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

相关文章:

  • 2021-12-04
  • 2022-01-14
  • 2022-12-23
  • 2022-12-23
  • 2021-04-02
  • 2021-07-04
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-07-11
  • 2022-12-23
  • 2021-10-24
  • 2022-02-19
  • 2022-12-23
  • 2021-06-14
相关资源
相似解决方案