黑马程序员——c#中的构造方法

一、什么是构造方法?

  首先,它是一个方法,它是类中众多方法中的一个。其次,它具有类中其他方法所不具备的一些特性。简单来说,它是一个有着特殊使命的方法,他的绰号叫构造。

二、构造方法相对其他方法有哪些不同?

  方法名:类中普通的方法可以根据代码书写者的个人喜好任意取名。但是,构造方法不可以。构造方法的名字必须与类名相同。换句话说,当类中的一个方法名与类名相同时,C#即认为此方法为类的构造方法。

  执行顺序:类中的普通方法是在类实例化之后被调用执行的,而构造方法则是在类实例化之前执行的。

  可以简单理解为:

  当准备创建一个类的实例时,首先会执行构造方法,然后在进行类的实例化。如以下代码

ClassName objName = new ClassName();

可以理解为关键new后面 ClassName()为类的构造方法。

三、如果类中没有书写构造方法,实例化类时会出错么?

  不会。首先,C#每个类都有自己的构造方法;即便你在书写类时没有书写构造方法,C#也会创造一个默认的没有参数的构造方法出来,这个默认的构造方法是看不到的,但它是真实存在的。

四、一个类中只能由一个构造方法么?

  不是的,一个类中可以存在多个构造方法,以不同的参数进行区分,这就构成了构造方法的重载。

五、为什么要用构造方法

   1)对对个属性进行赋值时,不需要重复的写实例名。

2)可以保证用户在new一个对象时必须对某一属性进行赋值。

3)在创建属性时,对只读属性进行初始化。

代码示例如下:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

 

namespace _02练习

{

    class Program

    {

        static void Main(string[]args)

        {

           //下句代码为初始化时进行赋值。

            Personp = new Person("张三¨",'',19,89,90,87);

//不必重复书写实例名。

            // p.Name = "?¨y";

            //p.Sex ='D';

            //p.Age =19;

            //p.Chinese= 89;

            //p.English= 90;

            //p.Math= 87;

 

            Personp1 = new Person("李斯",'', 18);

 

            p.SayHello();

            p.ShowScore();

         

            Console.ReadKey();

        }

    }

}

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

 

namespace _02练习

{

    class Person

{

//下面是构造方法

       public  Person(stringname,char sex,intage,int chinese,intmath,int english)

        {

           this.name=name;

           this.sex= sex;

           this.age= age;

           this.chinese= chinese;

           this.english= english;

           this.math= math;

        }

 

       publicPerson(string name,charsex, int age)//构造方法重载

       {

           this.name= name;

           this.sex= sex;

           this.age= age;

       }

       

        charsex;

        public char Sex

        {

            get{ return sex; }

            set

            {

                if(value =='' ||value== '')

                {

                    sex = value;

                }

                else

                {

                    sex = '';

                }

            }

        }

      

        intage;

        public int Age

        {

            get{ return age; }

            set

            {

                age = value>= 0 ?value : 0; //三元表达式。

            }

        }

      

        intchinese;

        public int Chinese

        {

            get{ return chinese; }

            set{ chinese = value>=0?value:0; }

        }

      

        intmath;

        public int Math

        {

            get{ return math; }

            set{ math = value >= 0 ? value : 0; }

        }

     

        intenglish;

        public int English

        {

            get { return english; }

            set{ english = value >= 0 ? value : 0; }

        }

      

        stringname;  //name只有get方法,为只读属性。

        public string Name

        {

            get{ return name; }

            //set {name = value; }

        }

 

        public void SayHello()

        {

            Console.WriteLine("我叫{0},我今年{1}岁了,我是{2}",name,age,sex);

        }

        public void ShowScore()

        {

            intsum = chinese + math + english;

            intavg = sum / 3;

 

            Console.WriteLine("我叫{0},我的总成绩是{1},平均分是{2}",name,sum,avg);

        }

    }

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值