构造函数
构造的概念:是类的一种方法名和类名相同,没有返回值类型,并且主要完成对象的处始化工作
含义
SE se = new SE() 三层含义:1.开辟空间 2.调用构造 3.创建对象
示例
static void Main(string[] args)
{
SE se = new SE();
Console.WriteLine(se.SayHi());
se.ID = "111";
se.Name = "张三";
se.Age = 20;
se.Gender = Gender.female;
se.Popularity = 99;
Console.WriteLine(se.SayHi());
}
SE se = new SE(); 代表创建SE对象,这种创建类实例的方法 称为构造函数。
如果示例中调用构造函数创建SE对象,并为其意义赋值,如果不赋值,系统将给各个字段赋予默认值。
构造函数的特点
- 方法名与类名相同
- 没有返回值类型
- 主要完成对象的初始化工作
构造函数没有返回值类型,不可以用void定义
无参构造函数
- 默认情况下系统会给类分配一个无参构造函数,并且没有方法体,我们可以定义一个无参构造函数的方法中对类的属性进行赋值。
语法:
访问修饰符 类名 ()
{
//方法体
}
带参构造函数
语法:
访问修饰符 类名 (参数列表)
{
//方法体
}
参数列表:一般用于给类的属性赋值
示例
//SE类带参构造函数
public SE(string id, string name, int age, Gender g, int pop)
{
Console.WriteLine("我是带参数构造函数");
this.ID = id;
this.Name = name;
this.Age = age;
this.Gender = g;
this.Popularity = pop;
}
//main方法
//调用带参的构造函数:参数的个数\类型\顺序要一致
static void Main(string[] args)
{
SE se2 = new SE("112", "李四", 22, Gender.male, 10);
Console.ReadLine();
}
常见错误
- 调用代餐构造函数时一定要使传入的参数,和参数列表一一对应。
- 构造函数在每次实例化类时通过 new 关键字调用。
隐式构造函数
当我们没有在类中显示的定义一个类的构造函数时,系统会自动给我们隐式的定义一个没有方法体的无参构造,这就是隐式构造函数,值得注意的是当我们显示的定义类的构造时系统就不会在为我们定义该类的隐式构造函数了
修饰符
构造函数的修饰符一般是public,不过C#中也有私有的构造函数。
方法的重载
- 方法重载:同一个类中,方法名相同,参数列表不同(参数类型不同、参数个数不同。构造函数和普通方法都可重载。
- 注意:方法名及参数列表相同的方法,仅是返回值类型不同,不能成为方法重载。
构造函数重载
Public Class SE
{
string id;
string name;
//带参构造函数
public SE(string id,string name)
{
this.id=id;
this.name=name;
}
//无参构造函数
public SE()
{
}
}
- 构造函数重载:提供多种实例化对象的方式。
方法的重载
public static void Main(string [] args)
{
Console.WriteLine(12);
Console.WriteLine("Hello");
}
从以上可以看出第一个WriteLine方法接受一个int类型参数,第二个WriteLine方法接受一个string类型参数。WriteLine()提供了多种重载方法,满足各种需求。
对象交互
- 概述:对象与对象是相互独立的,互不干扰,但在一定的外力作用下,对象开始努力。
总结
- 带参构造函数提供了初始化对象的多种选择,我们可以有选择的初始化相应的属性。
- 如果没有给类添加显示构造函数,那么系统在初始化对象时会调用隐式构造函数,并且系统会根据属性的数据类型给予赋值和默认值。
- 构造函数 通常与类名相同,构造函数不声明返回值,一般情况系下,构造函数是public类型。
- 方法重载是指 方法名相同,而 数据类型和参数个数不同,在同一类中构造函数和普通方法都可以重载。