zoukankan      html  css  js  c++  java
  • 深入理解构造函数和属性

    记得刚学构造函数和属性的时候,一直感觉这些东西没什么用,比如属性,明明我用字段就可以实现了,干嘛还要多写那几行代码,后来做的项目多了,看的书也多了,才慢慢体会到很多编程语言高级特性的妙处,才真正理解了这些特性的本质,比如 C#中委托实际上就相当于C语言的函数指针,通过委托把函数当参数来提高程序的灵活性和低耦合性。这里通过一个简单的实例来写一下自己的一些理解,注释里写的很详细了,话就不多说了。

    Human类:

    class Human
        {
            //通过有参数的构造函数进行初始化   构造函数可以重载
            public Human(string name, int age, bool isgirl, string country)
            {
                Console.WriteLine("这是第一个构造函数:");
    
                Name = name;
                Age = age;
                IsGirl = isgirl;
                Country = country;
                SayHi();            
            }
    
            public Human(string name, int age, string country)
            {
                Console.WriteLine("这是第二个构造函数:");
    
                Name = name;
                Age = age;            
                Country = country;
            }
    
            //通过定义属性 使得其他类不能直接修改这个类里的字段 从而实现更好的封装
            //简洁法 定义属性和字段 字段编译器自动生成的
            public string Name { get; set; }
            public int Age { get; set; }
            public bool IsGirl { get; set; }
            public string Country { get; set; }
    
            //下面是一般方法定义字段和属性
            //private string name;
            //public string Name
            //{
            //    get { return name; }
            //    set { name = value; }
            //}
    
            //打招呼方法
            public void SayHi()
            {
                Console.WriteLine("你好,我叫{0},我{1}岁了,我是个{2}生,我来自{3}", Name, Age, (IsGirl ?"女生":"男"),Country );  //这里用到了三元运算符  如果是 就:前面的 否 就:后面的
            }
    
        }
    

    Program类

     class Program
        {
            //这个练习是对属性和构造函数的综合应用
            static void Main(string[] args)
            {
                //直接用构造函数初始化就执行了所有操作  相对一个一个赋值再调用方法简洁很多
                Human xiaoming = new Human("小明",19,false,"中国");
    
                //这个是构造函数的重载  用于实现不同的初始化 或者说 功能
                //Human xiaoming = new Human("小明", 19, "中国");   
    
                Console.ReadKey();
            }
        }
    

    程序运行结果

    这是第一个构造函数:
    你好,我叫小明,我19岁了,我是个男生,我来自中国
    
  • 相关阅读:
    CSS选择器实现搜索功能 驱动过滤搜索技术
    js实现倒计时 类似团购网站
    SQL Server系统表sysobjects介绍与使用
    四种开机的奇葩方法 设置定时开机
    sass 使用小记
    flex 弹性布局
    margin padding width height left top right bottom 百分比
    vue中canvas 实现手势密码
    babel-polyfill(解决浏览器不支持es6的问题)和es6-promise(解决不支持promise的问题)
    Ajax fetch axios的区别与优缺点
  • 原文地址:https://www.cnblogs.com/qiaogaojian/p/6239190.html
Copyright © 2011-2022 走看看