静态成员
Posted cicily
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了静态成员相关的知识,希望对你有一定的参考价值。
关键字: 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!"); } }
以上是关于静态成员的主要内容,如果未能解决你的问题,请参考以下文章