zoukankan      html  css  js  c++  java
  • 静态成员

    关键字: static

    用在: 字段、方法、属性、构造函数、事件

    作用 :可以被类的所有实例共享,都访问的同一个内存位置。

        想到这个 同一个内存位置,我脑海里突然浮现一种声音,“你见,或者不见我     我就在那里   不悲 不喜”

         静态成员和实例成员不同的保存方式,静态成员存储在堆中。实例成员要通过new 一个对象来访问。静态成员直接通过“class XXX.”来访问。

         静态成员在访问之前就已经初始化好了。 

      class Program
        {
            static void Main(string[] args)
            {
               
                Pet[] pets = new Pet[] { new Dog("DD"), new Cat("CC") };//new Dog的时候执行了一次++Num
              
             
                Dog D = new Dog("DD1");//此对象的创建通过其类的构造函数执行了一次++Num
                Dog.ShowNum();//调用静态方法
                D.Lost();//
                Dog.ShowNum();
                Dog d0 = (Dog)pets[0];
                d0.Lost();
                Dog.ShowNum();
    
            }
    
        }
        abstract public class Pet//当包含抽象方法时,必须用abstract声明
        {
            protected string Name;//protected 保护级别,派生类可访问
            public Pet(string name)//基类的构造函数
            {
                Name = name;
            }
            public void PrintName()
            {
                Console.WriteLine("Print" + Name);
            }
    
          
            abstract public void Speak();
        }
        public class Dog : Pet
        {
            static int Num;
            static Dog()// 静态构造函数// 静态字段初始化
            {
                Num = 0;
            }
            public Dog(string name) : base(name)//构造函数//用关键字base调用了基类的构造函数
            {
                ++Num;
            }
            new public void PrintName()
            {
                Console.WriteLine("子打印" + base.Name);
            }
           
            sealed override public void Speak()
            {
                Console.WriteLine("子说" + Name);
            }
            static public void ShowNum()
            {
                Console.WriteLine("Dog's number = "+ Num);
            }
             public void Lost()
            {
                --Num;
                Console.WriteLine( Name+" is Lost!");
            }
        }
  • 相关阅读:
    assembly打包。
    调用jar程序,读取与jar同级的配置文件。
    java.lang.UnsupportedClassVersionError
    jar包程序 读取properties文件
    Mysql-5.7.10启动失败 。
    spring HibernateValidator 验证 子类不起作用
    Eclipse 启动Tomcat后web项目的classes的子文件夹中没有calss文件
    java.lang.Exception: Socket bind failed: [730013] An attempt was made to acc
    log4
    jquery.validationEngine
  • 原文地址:https://www.cnblogs.com/cicily/p/10930072.html
Copyright © 2011-2022 走看看