首页 > 其他 > 详细

第三章、类的构造函数与属性

时间:2020-06-12 00:20:34      阅读:59      评论:0      收藏:0      [点我收藏+]
1、专业单词
单词释义
property 属性
get 得到、获取
set 设置
 
2、对象的生命周期

每个对象都有一个明确定义的生命周期,生命周期有三个阶段

  • 构造阶段:由构造函数完成,对新建对象进行初始化。

  • 正常使用阶段。

  • 析构阶段:对象使用完后,进行一些清理工作,如释放内存,C#中由析构函数完成。

 
3、构造函数的概念

构造函数是个特别的方法,用来初始化类的新建对象(对象存储的数据)。当访问一个类的时候,系统将 首先执行构造函数中的语句。

构造函数在创建类的对象时自动执行,即无论程序是否调用类的字段、属性或方法,构造函数都将在创建 对象时执行。

例: class Human { public Human(){} } 

 

4、构造函数的特征
  • 构造函数的名称必须与类的名称相同。

  • 构造函数不能声明返回类型(甚至不能使用void),也不能返回值。

  • 一般的,构造函数总是public,private类型的构造函数表明类不能被实例化,通常用于只含有静态成员的类。

  • 在构造函数中不要做初始化以外的事情。

  • 构造函数可以重载,从而提供初始化对象的不同方法。

  • 实例化对象时由编译器自动调用构造函数,不能显式的调用构造函数。

  • 若在定义类时未定义构造函数,系统会自动生成默认的构造函数,此时构造函数的函数体为空。

 
5、构造函数的应用
  • 构造函数的语法

    [访问修饰符] 构造函数名 (形参列表)
    {
       初始化代码
    }
 
6、默认构造函数
  • 每个类都有构造函数。即使没有为类声明构造函数,编译器也会自动的为类提供一个默认的构造函数。

  • 默认构造函数没有参数,当被执行时,系统会给类的所有字段赋一个默认值,这样能够避免编译错误。

    各种类型的字段的默认值

    类型默认值
    数值型(各种整数、小数) 0
    char ‘0‘
    boo l false
    引用类型 null
 
7、构造函数的重载
  • 构造函数也可以带参数,这样能传递不同的数据来对类的对象进行初始化。

  • 一个类可有多个不同参数的构造函数,但由于构造函数只能使用一个名称,即同他所在的类名相同,所以只能用构造函数重载来实现。

    例:
        class Human
        {
          public  string name;
            public int age;
            
            public Human() { }//无参构造
            
            public Human(string Name) 
            { 
                this.name = Name; 
            }
            
            public Human(string Name,int Age) //含参构造
            { 
                this.name = Name;
                this.age = Age; 
            }
        }

     

8、属性概念
  • 面向对象的封装性原则要求不能直接访问类的数据成员,如何访问类的私有成员呢?为了解决这个问题C#提供了一个称为:属性的访问器来完成这个功能。

  • 类的属性所描述的是状态的信息,它借助于get和set访问器来对属性进行访问定义。

 
9、属性的使用
  • 定义属性

    语法:
      [访问修饰符] [static] 数据类型 属性名
      {
      get{读访问器体}
      set{写访问器体}
      }
    ?
    示例:
        public class Student
        {
            private string _name;
            //原始写法
            public string Name
            {
                get { return this._name; }
                set { this._name = value; }
            }
            //屌的写法
            public string Name
            {
                get=>_name;set=>_name=value;    
            }
            //便捷写法
            public string Name{get;set;}        
  • 访问属性

    语法:
       访问静态属性:类名.属性名
       访问实例属性:对象名.属性名
    示例:
        
        class Student
        {
            private string _name;
            //定义一个静态属性
            public string Name{get;set;}
            
            public static string power{get;set}
        }
        static void Main(string[] args)
        {
            //访问静态属性
            Student.power="";
            //访问实例属性
            Student stu=new Student();
            stu._Name="";
        }    
  • 只读属性

    只读属性(少了set访问器);当编程时,有些属性只能返回值,不能重新赋值,就可用只读属性。

    只读属性的写法:
       //便捷写法
      [访问修饰符] 属性的数据类型 属性名称{get;private set;}//可在类中赋值
    [访问修饰符] 属性的数据类型 属性名称{get;}//只能在字段中赋值
    //原始写法
    [访问修饰符] 属性的数据类型 属性名称 {get{return 属性名称};}
    //屌的写法
    [访问修饰符] 属性的数据类型 属性名称{get=>字段名称;}
    示例:
        class Student
        {
            private  int _age;
            //便捷写法
            public int Age{get;private set;}
            public int Age{get;}
            //原始写法
            public int Age{return this._age;}
            //屌的写法
            public int Age{get=>_age;}
        } 
  • 只写属性

    只写属性(少了get访问器);当编程时,有些属性只能赋值不能取值,就可用只写属性。

只写属性写法:
   //便捷写法
  [访问修饰符] 属性的数据类型 属性名称{set;private get;}//可在类中取值
//原始写法
[访问修饰符] 属性的数据类型 属性名称 {set{属性名称=value};}
//屌的写法
[访问修饰符] 属性的数据类型 属性名称{sset=>字段名称=value;}
示例:
    class Student
    {
        private  int _age;
        //原始写法
        public int Age{set{this._age=value}}
        //便捷写法
        public int Age{set;private get;}
        //屌的写法
        public int Age{set=>_age=value}
    }

第三章、类的构造函数与属性

原文:https://www.cnblogs.com/yang-yi/p/13096456.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!