zoukankan      html  css  js  c++  java
  • 第五章 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}
     毛色:{1},重量:{2}千克,生日:{3}", variety, haircolor, weight, birthday.ToShortDateString());
            }
    
            //析构函数
            ~Cat()
            {
                Console.WriteLine("执行了析构函数!");
                count--;
                Console.WriteLine("目前有{0}只猫", count);           
            }
        }
    }

     运行结果如下图所示:

  • 相关阅读:
    sql 删除
    sql 修改
    sql 新增
    sql UNION 和UNION ALL 数据连接查询
    WITH AS 子查询部分【mysql5.7及以下不支持,mysql8.0及sqlserver支持】
    sql 高级开窗函数row_number() over()和row_number() over(partition by)【mysql5.7及以下不支持,mysql8.0及sqlserver支持】
    sql 查询去重
    sql 常用聚合函数介绍
    sql 分组(group by)
    NPM 私有仓库搭建
  • 原文地址:https://www.cnblogs.com/programme-maker/p/10890368.html
Copyright © 2011-2022 走看看