c# 面向对象 继承方式,字段,属性,析构器等意义和写法

1.字段(类中私有保存数据的变量,和java一样),属性(字段对外展示的代理变量,内置get,set方法,可以在get set方法中写逻辑),构造器(调用对象本省的其他构造器方式和java不同),析构器(在程序结束前最后自动执行的一个函数,一般用于数据清理释放资源,一般不太用,因为有gc回收器)。

测试类:

using System;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            //Student student = new Student(23,"ssssss");
            Student student = new Student(23);
            Console.WriteLine("id:{0} name:{1}", student.Id, student.Name);
            Console.ReadKey();
        }
    }
}

被调用的类

using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApp1
{
    class Student
    {
        /// <summary>
        /// 构析函数:此函数是在程序结束的时候调用,一般用来清理数据释放内存,当然c#中也有gc但是一样不受管理,
        /// 所以如果想在程序结束后立即清理垃圾释放内存就可以在这儿清理。
        /// </summary>
        ~Student(){
            Console.WriteLine("在程序结束前最后自动调用的一个函数,主要用于垃圾清理");
        }

        /// <summary>
        /// 带id的构造器,里面演示了此构造器调用当前对象的其他构造器的方法。
        /// </summary>
        /// <param name="Id"></param>
        public Student(long Id) : this(Id, "小刚") { }

        /// <summary>
        /// 全参构造器
        /// </summary>
        /// <param name="Id">id</param>
        /// <param name="Name">姓名</param>
        public Student(long Id, string Name) {
            this.Id = Id;
            this.Name = Name;
        }

        /// <summary>
        /// 空构造器
        /// </summary>
        public Student() { }

        /// <summary>
        /// 字段:_id 类中最终保存数据的地方
        /// 属性:Id 对外展现数据的名称,里面包含get,set属性,可以在get,set方法中添加自定义的代码
        /// 调用示例: 
        /// Student student = new Student();
        /// student.Id = 22222; 赋值"set"
        /// long newId = student.Id; 取值"get"
        /// </summary>
        private long _id;
        public long Id
        {
            get => _id; 
            set => _id = value; 
        }

        /*
         * _name是字段名,Name是属性名:属性中包含get和set方法。
         */
        private string _name;
        public string Name
        {
            get { return _name; }
            set
            {
                if (value.Equals("小明"))
                {
                    value = "娜可露露";
                }
                _name = value;
            }
        }
    }
}