构造方法重载
明白:一个类可以有若干构造方法,在构建对象的时候,我们可以选择自己需要的构造方法来完成对象初始化。
【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();
}
}}运行结果
