第五章 5.3类的静态成员,析造函数与析构函数(猫类)
【案例】定义猫类,在Cat类中定义字段,属性和方法,定义表示数量的静态字段与相应的静态属性,静态方法,再往Cat类中添加实例构造函数,静态构造函数和析构函数。在Progrom类中的Main()方法里声明两个Cat类对象,并使用不同的实例构造函数初始化对象。
【代码】
namespace ConsoleApp3 { class Program { static void Main(string[] args) { //声明并实例化对象,并自动调用匹配的实例构造函数初始化对象 Cat cat1 = new Cat("波斯猫","白色",2.3F); cat1.Display(); cat1.Miaow(); Console.WriteLine("目前有{0}只猫", Cat.Count); Console.WriteLine(); //声明并实例化对象,并自动调用匹配的实例构造函数初始化对象 Cat cat2 = new Cat("埃及猫", "银色黑斑",3.1F); cat1.Display(); cat1.CatchMice(); Console.WriteLine("目前有{0}只猫", Cat.GetCount()); Console.WriteLine(); cat1.Weight = 2.7F; Console.WriteLine("波斯猫cat1的体重变成了{0}千克了!", cat1.Weight); cat2.HairColor = "黑色"; Console.WriteLine("埃及猫cat2的毛染成了{0}了", cat2.HairColor); Console.WriteLine("埃及猫cat2的生日为:{0},今年{1}岁了", cat2.Birthday.ToShortDateString(), cat2.Age); Console.ReadLine(); } } //定义一个猫类,描述猫的信息 //添加静态字段count和相应的静态属性,静态方法 //猫类中添加实例构造函数,静态构造函数和析构函数。 class Cat { string variety;//品种 string haircolor;//发色 float weight;//重量 DateTime birthday;//生日 public static int count;//表示数量的静态字段 public string Variety//定义属性 { set { variety = value; }//写入数据 get { return variety; }//读取数据 } public string HairColor { set { haircolor = value; } get { return haircolor; } } public float Weight { set { weight = value; } get { return weight; } } public DateTime Birthday { get { return birthday; } } public int Age { get { return (DateTime.Today.Year - birthday.Year + 1); } } //读取数量的静态属性 public static int Count { set { count = value; } get { return count; } } //无参实例构造函数 public Cat() { count++; } //带参实例构造函数 public Cat(string myVatiety,string myColor,float myWeight) { variety = myVatiety; haircolor = myColor; weight = myWeight; birthday = DateTime.Today; count++; } public void CatchMice() { Console.WriteLine("我会抓老鼠!"); } public void Miaow() { Console.WriteLine("喵喵~~!"); } //读取Cat类对象数量的静态方法 public static int GetCount() { return count; } //设置猫各字段值的方法 public void SetInfo(string myVatiety, string myColor, float myWeight) { variety = myVatiety; haircolor = myColor; weight = myWeight; birthday = DateTime.Today; } //显示猫的信息 public void Display() { Console.WriteLine("我是一只{0}\n 毛色:{1},重量:{2}千克,生日:{3}", variety, haircolor, weight, birthday.ToShortDateString()); } //析构函数 ~Cat() { Console.WriteLine("执行了析构函数!"); count--; Console.WriteLine("目前有{0}只猫", count); } } }
运行结果如下图所示: