C#入门经典中的一句话
如果使用了override,也可以使用sealed指定在派生类中不能对这个方法做进一步修改,即这个方法不能由派生类重写,例如:
public class MyderivedClass:MyBaseClass
 {
   Public override sealed void DoSomething()
     {      }
 }非常的不理解,怎么看都觉的此处的override是多余的,有存在的必要性吗?谢谢

解决方案 »

  1.   

    sealed不能用于基类或者基类方法
    override显式声明该方法是重载过的方法且可以被子类重载
    override和sealed修饰符做与运算,可以被重载,但密封.也就是不能重载.
      

  2.   

    你要理解的是以下几点:
    1.C# 方法不显示告诉对方方法可以重载的情况下方法不可以被重载
    2.如果方法被显示告诉可以重载(virtual..)的话,子类可以继承后继续重载这个方法
    3.如果你想重载过某个方法后,让别人不再可以重载,这是override sealed的作用就来了.
      

  3.   

    MyBaseClass 中 有 DoSomething 的定义 or 实现
      

  4.   

    白话一点吧,写一点弱的代码
        class aa //基类
        {
            public virtual  void bb() 
            {
                
            }
        }
        class cc :aa
        {
            public override sealed  void bb()
            {
                
            }
        }
        class dd : cc 
        {
            public override void bb()//会提示错误,无法重写该方法
            {
                
            }
        }
    如果去掉sealed修饰符,dd中又可以重写bb方法,楼主应该明白了吧
      

  5.   

    override 表示重写基类的虚方法。
    sealed 是本方法密封,子类将不能重写此方法。
      

  6.   

    回复:依者西也
    3.如果你想重载过某个方法后,让别人不再可以重载,这是override sealed的作用就来了.
     
    我可以这样理解吗?
    我重载了某个方法,不写override,这样别人继承后,不是也不能重载吗?何苦还要写override再加seal呢?
      

  7.   

    java里可以,C#要显式声明override