代码之家  ›  专栏  ›  技术社区  ›  Mrinal Kamboj

为什么抽象类不能有密封方法[重复]

  •  1
  • Mrinal Kamboj  · 技术社区  · 6 年前

    代码段1(编译错误)-不能密封a.m2(),因为它不是重写

    abstract class A
    {
        public abstract void M1();
    
        public sealed void M2()
        {
            // Do Something
        }
    }
    

    abstract class A
    {
        public abstract void M1();
    
        public virtual void M2()
        {
    
        }
    }
    
    class B : A
    {
        public sealed override void M1()
        {
    
        }
    
        public sealed override void M2()
        {
    
        }
    }
    

    Abstract class 本身,为什么不允许我标记它? Sealed

    2 回复  |  直到 6 年前
        1
  •  4
  •   Ilan Keshet    6 年前

    sealed关键字只能放在可重写的函数上。

        2
  •  3
  •   Manoz    6 年前

    abstract 类。在方法是派生类中的重写方法之前,不能使它在任何类中成为密封方法。

    private 访问修饰符。

    A,B,C B A C 来源 -> B:A, C:B

     abstract class A
        {
            public abstract void MyMethod();
        }
    
        class B : A
        {
            public sealed override void MyMethod()
            {
    
            }
        }
    
        class C : B
        {
            public override void MyMethod()
            {
    
            }
        }
    

    在里面 B 那么,由于关键字是密封的,所以不允许这样做。

    B sealed