构造方法重载
明白:一个类可以有若干构造方法,在构建对象的时候,我们可以选择自己需要的构造方法来完成对象初始化。
【1】无参数构造方法在什么情况下使用?
通常我们给一下特定的和固定不变的成员(字段、属性)或者配置文件读取等,可以使用。
【2】有参数的构造方法?
根据需求,你希望用户创建对象的时候,做哪些初始化的工作,可以放到有参数的构造方法。
不同:需要调用者从外面传递数据过来。
构造方法相互调用
使用:this关键字(参数....)
无参数构造方法:只有在没有任何构造方法的情况下,编译器才会自动生成。
所以,如果你设计一个类,需要用户在构建对象的时候,必须传递初始化的数据,就可以自己删掉无参数的构造方法,从而添加有参数的构造方法。
构造方法重载的条件:不同构造方法的参数类型或个数必须不一样。
构造方法重载的好处:创建对象的时候,会综合到一起,提示给用户选择。
this关键字
【1】在构造方法调用另一个构造方法的时候,可以使用。
【2】this可以调用类的成员(字段、属性、方法)
public Student(string name, int age, string gender) { this.name = name; this.age = age; this.gender = gender; }
this.表示当前类(对象)
代码演示
Student类
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace itss.HelloWord{ public class Student { //添加字段 /* private string name;//姓名 private int age;//年龄 private string gender;//性别*/ //默认方法 public Student() { this.name = "xll"; this.age = 18; this.gender = "男"; } //方法重载 /// <summary> /// 学生类方法重载 /// </summary> /// <param name="name">姓名</param> /// <param name="age">年龄</param> /// <param name="gender">性别</param> public Student(string name, int age, string gender) { this.name = name; this.age = age; this.gender = gender; } public string name { get; set; } public int age { get; set; } public string gender { get; set; } }}
测试类
using MyTestDLL;using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace itss.HelloWord{ internal class Program { static void Main(string[] args) { /*Console.WriteLine("Hello word !"); //Console.ReadLine(); Class1 cc = new Class1(); Console.WriteLine(cc.addTest()); Console.ReadLine();*/ Student stu1 = new Student();/* stu1.name = "sql"; stu1.age = 17; stu1.gender = "男";*/ Console.WriteLine(stu1.name); Console.WriteLine(stu1.age); Console.WriteLine(stu1.gender); Console.WriteLine("----------------------------------"); Student stu2 = new Student("xxl", 17, "男"); Console.WriteLine(stu2.name); Console.WriteLine(stu2.age); Console.WriteLine(stu2.gender); Console.ReadLine(); } }}
运行结果