构造方法
1、什么是构造方法?
首先,它是一个方法,它是类中 众多方法中的一个。其次,它具有类中其他方法所不具备的一些特性。
简单来说,它是一个有着特殊使命的方法,他的绰号叫构造。
2、构造方法相对其他方法有哪些不同?
方法名:类中普通的方法可以根据代码书写者的个人喜好任意取名。但是,构造方法不可以。构造方法的名字必须与类名相同。换句话说,当类中的一个方法名与类名相同时,C#即认为此方法为类的构造方法。
执行顺序:类中的普通方法是在类实例化之后被调用执行的,而构造方法则是在类实例化之前执行的。
可以简单理解为:
当准备创建一个类的实例时,首先会执行构造方法,然后在进行类的实例化。如以下代码
ClassName objName = new ClassName();
可以理解为 关键字 new 后面 ClassName() 为类的构造方法。
3、如果类中没有书写构造方法,实例化类时会出错么?
不会。首先,C#中 每个类都有自己的构造方法;即便你在书写类时没有书写构造方法,C#也会创造一个默认的没有参数的构造方法出来,这个默认的构造方法是看不到的,但它是真实存在的。
4、一个类中只能由一个构造方法么?
不是的,一个类中可以存在多个构造方法,以不同的参数进行区分,这就构成了构造方法的重载。
例如:
1 class Program 2 { 3 private Program() 4 { 5 Console.WriteLine("我是构造函数Program(),我没有参数"); 6 } 7 public Program(string a) 8 { 9 Console.WriteLine("我是构造函数Program(string a),我的参数是字符"); 10 } 11 public Program(int b) 12 { 13 Console.WriteLine("我是构造函数Program(int b),我的参数是数值"); 14 } 15 public Program(string a,int b) 16 { 17 Console.WriteLine("我是构造函数Program(string a,int b),我的参数有两个"); 18 } 19 static void Main(string[] args) 20 { 21 Program objProgram0 = new Program(); 22 Program objProgram1 = new Program("123"); 23 Program objProgram2 = new Program(123); 24 Program objProgram3 = new Program("123",123); 25 Console.Read(); 26 } 27 } 28 }
当我们实例化一个类时,系统会自动对这个类的属性进行初始化:
- 数字类型初始化成0 /0.0
- String 类型初始化成:null
- Char类型初始化成:\0
使用构造方法的好处:
- l 对多个属性进行赋值时,不需要重复的写实例名
- l 可以保证用户在new一个对象的时候必须对某一个属性进行赋值
- l 和第2类似,在创建对象时,对只读属性进行初始化
当我们定义好一个类之后,如果我们没有写构造方法,那么系统会给我们加上一个默认的没有参数的构造方法,在这个构造方法中什么也不做,我们也看不到
我们可以定义一个构造方法:
构造方法是一个特殊的方法,他的名字和类的名字相同,并且没有返回值。连void都可以省略不写,我们一旦手写一个构造方法后,系统原先默认我们添加的那个无参数的构造方法就不会再为我们添加了