第五章 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);           
        }
    }
}

 运行结果如下图所示:

 

posted on 2019-05-19 19:23  熟烂的番茄  阅读(343)  评论(0编辑  收藏  举报

导航