一,构造函数:
构造函数是初始化已创建好的对象中成员变量的,而不是创建对象的,构造函数只是进一步为已创建的对象属性赋值,使之更新“想象”中的对象,对象在非静态代码块执行之前,在构造方法调用之前已经存在了。
自己的理解:方便类之间进行赋值
二,构造函数的特性:
1,创建对象的图书方法,方法名和类名一样,没有返回值,连void都不用
2,构造函数可以有参数
3,如果不指定构造函数,则类有一个默认的无参构造函数,
4,如果在类中定义了有参的构造函数,编译器就不会再生成无参的构造函数。此时若需要调用无参构造函数,需要在类中定义,否则编译器会报错。
三,构造函数的执行过程:
1)传参
2)给类数据成员开辟空间
3)执行冒号语法给数据成员初始化
4)执行构造函数括号里面的内容
附上代码:以下主要是有两个构造函数,一个是无参的,另一个是含参的
class Person
{
private string gender;
public string gender
{
get { return gender; }
}
public Person()//实例构造函数(无参构造函数)
{
this.gender = "keeping moving";
}
public Person(string strgender)//有参构造函数
{
this.name = strgender;
}
}
class Program
{
static void Main(string[] args)
{
Person person = new Person();//调用无参构造函数
Console.WriteLine(person.gender);
Person person2 = new Person("girl");//调用有参构造函数。
Console.WriteLine(person2.gender);
Console.ReadKey();
}
}
}
四,构造函数的类型:
私有:私有构造函数只能在类中使用,不能超出这个类的 范围
公有:可以在多个类中使用
静态:静态调用函数只能调用一次。
举例如下
class PersonSta
{
static string name;//静态字段
public static string Name //静态属性
{
get
{
return name;
}
}
static PersonSta() //静态构造函数,仅执行一次
{
Console.WriteLine("静态构造函数被调用了");
name = "keep moving";
}
}
class Program
{
static void Main(string[] args)
{
//调用了两次,‘静态构造函数被调用了’--这句只被打印了一次。
Console.WriteLine(PersonSta.Name);
Console.WriteLine(PersonSta.Name);
}
}