zoukankan      html  css  js  c++  java
  • C#_基础_密封类和密封方法关键字sealed(二十)

    sealed:

      adj. 密封的;未知的

      v. 封闭;盖印(seal的过去分词)

    被sealed修的类:密封类

    修饰的方法: 密封方法

    密封类:可以继承其他类,不可以被其他类继承

    密封方法: 密封方法,在派生类中该方法不可以重写

    密封类不可以被继承,那么密封类中不可以有虚方法和抽象方法。

     1 namespace 密封类
     2 {
     3     class Program
     4     {
     5         static void Main(string[] args)
     6         {
     7         }
     8     }
     9 
    10     //密封类:不能够被继承,可以继承别人 sealed
    11     class Person
    12     {
    13 
    14     }
    15     sealed class   Man:Person  //密封类可以继承别人
    16     {
    17 
    18     }
    19     class Student //:Man  不能继承密封类
    20     {
    21         
    22     }
    23 }

    sealed: 密封方法后必须由override,也就说密封方法必须先是重写父类的方法,重写, 然后才能变成密封方法

     1     class Person
     2     {
     3         public virtual void Run()
     4         {
     5 
     6         }
     7     }
     8     class   Man:Person  //密封类可以继承别人
     9     {
    10         public sealed  void Run()
    11         {
    12 
    13         }
    14     }

    密封方法:派生类中不可以重写密封方法,子类可以继承到密封类

     1     class   Man:Person  //密封类可以继承别人
     2     {
     3         public sealed  override void Run()
     4         {
     5             Console.WriteLine("man");
     6         }
     7     }
     8     class Student :Man 
     9     {
    10         public override void Run()
    11         {
    12             Console.WriteLine("student");
    13         }
    14     }

    但是可以隐藏掉父类的方法:new

     1     class Person
     2     {
     3         public virtual void Run()
     4         {
     5 
     6         }
     7     }
     8     class   Man:Person  //密封类可以继承别人
     9     {
    10         public sealed  override void Run()
    11         {
    12             Console.WriteLine("man");
    13         }
    14     }
    15     class Student :Man 
    16     {
    17         public new void Run()
    18         {
    19             Console.WriteLine("student");
    20         }
    21     }

    子类可以继承到密封类

     1 namespace 密封类
     2 {
     3     class Program
     4     {
     5         static void Main(string[] args)
     6         {
     7       //输出结果都是man,可以密封方法可以被子类继承到
     8             Student s = new Student();
     9             s.Run();
    10 
    11             Man m = new Student();
    12             m.Run();  
    13 
    14             Console.ReadKey();
    15         }
    16     }
    17 
    18     //密封类:不能够被继承,可以继承别人 sealed
    19     class Person
    20     {
    21         public virtual void Run()
    22         {
    23 
    24         }
    25     }
    26     class   Man:Person  //密封类可以继承别人
    27     {
    28         public sealed  override void Run()
    29         {
    30             Console.WriteLine("man");
    31         }
    32     }
    33     class Student :Man 
    34     {
    35     }
    36 }

    在标记密封类或密封方法要慎重。

  • 相关阅读:
    (zt)再给正直一次机会(最新进展)
    迁勇
    一本书、四部电影
    巴乔到北京了
    MLDN
    (zt)沉默是美德(转自连岳)
    十分钟
    不推荐两部电影
    Project Processing ...... Requirement
    Oracle Data Guard Linux 平台 Logical Standby 创建实例
  • 原文地址:https://www.cnblogs.com/CeasarH/p/9185823.html
Copyright © 2011-2022 走看看