zoukankan      html  css  js  c++  java
  • 静态成员静态类+sealed关键字 Carl

     1       
     2             //MyClass mc = new MyClass();
     3             //mc.M1();
     4 
     5             ////1>调用静态方法的时候必须通过类名直接来调用,不能通过对象来调用,
     6             ////也就是说使用静态成员不需要实例化对象。
     7             ////2>静态成员会在整个应用程序退出时,才释放资源,所以可以在整个应用程序中共享数据。
     8             //3>静态类不能被实例化,不能被继承。
     9 
    10             //4>由于静态成员会在整个程序退出时,才释放资源,所以尽量避免写静态字段或静态属性,最好只写静态方法。
    11 
    12             //5>当给一个普通类添加静态字段后,系统会默认为该类生成一个静态构造函数【静态构造函数不能有访问修饰符、并且也不能带参数】
    13 
    14             //6>//静态类的构造函数,只会在第一次使用静态类之前,执行,并且只会执行一次。
    15             //静态构造函数不能有访问修饰符,不能有参数。
    16 
    17 
    18             //MyClass.M2();
    19             //Console.ReadKey();
    20 
    21 
    22 
    23             //1.什么情况下要将一个类标记为静态类
    24             //- 一般情况是,当这个类是一个工具类,里面都是方法。为了让用户调用的时候方便,不需要实例化对象,这时可以将该类标记为static类,此时该类中只能包含静态成员,不能包含实例成员。比如:Convert、Math、File、Console....
    25 
    26             //2.什么情况下需要在一个普通类中编写一个静态成员,而这个类不能标记为static?
    27             //- 当这个类需要被实例化的时候。如果这个类中有一个成员是所有对象都共享的数据,这时可以将该类中的这个成员标记为静态的,但是这个类还是一个实例类。
    28             //Console.WriteLine();
    29             // Math.
    30         }
    31     }
    32 
    33     class MyClass
    34     {
    35         public void M1()
    36         {
    37             Console.WriteLine("M1");
    38         }
    39 
    40         public static void M2()
    41         {
    42             Console.WriteLine("普通类中的一个静态方法..M2");
    43         }
    44     }

    sealed关键字有什么作用呢?

      当我们使用虚方法virtual时,子类可以用override重写,并且子类的子类也可以重写,子子类依然可以重写,当我们不想让某个方法被子类在重写的时候我们就可以在这个方法前面加上一个sealed关键字。

     1  public class Person
     2     {
     3         public string Name
     4         {
     5             get;
     6             set;
     7         }
     8 
     9         public virtual void SayHi()
    10         {
    11             Console.WriteLine("hi in Person.");
    12         }
    13     }
    14 
    15     class Chinese : Person
    16     {
    17         //禁止子类重写该方法。
    18         public sealed override void SayHi()
    19         {
    20             Console.WriteLine("hi in Chinese");
    21         }
    22     }
    23 
    24     class BeiJingren : Chinese
    25     {
    26        //这里将不能再重写SayHi()方法,否则报错
    27         //public override void SayHi()
    28         //{
    29         //    Console.WriteLine("hi in BeiJingren");
    30         //}
    31     }
  • 相关阅读:
    Vagrant box ubuntu/xenial64 添加vagrant用户解决没有登录密码的问题
    jQuery获取浏览器URL链接的值
    js防止客户端多触发
    Jquery实现一组复选框单选
    jQuery监听文本框值改变触发事件(propertychange)
    将http调用返回json中的有关中文的unicode转换为中文
    Visual Studio 2015 Bowser Link的功能不停的向服务端发送请求
    客户端向服务端传送特殊字符解决方法(检测到有潜在危险的 Request.Form 值)
    java集群之session共享解决方案
    阻止保存要求重新创建表的更改选项
  • 原文地址:https://www.cnblogs.com/sc0791/p/2645981.html
Copyright © 2011-2022 走看看