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 }

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

  • 相关阅读:
    MySQL 查询树结构、循环查询、查看函数、视图、存储过程
    SpringBoot 部署:外置依赖包
    springboot集成docker实现自动化构建镜像说明
    Chrome谷歌浏览器常用快捷键、开发技巧
    Windows常用CMD命令
    Git 版本管理,与 SVN区别对比
    TensorFlow重新导入restore报错: OP_REQUIRES failed at save_restore_v2_ops.cc:184 : Not found: Key Variable not found in checkpoint
    MySQL字符集设置
    Hive 时间操作
    深度思考:如何规划你的职业生涯
  • 原文地址:https://www.cnblogs.com/CeasarH/p/9185823.html
Copyright © 2011-2022 走看看