构造函数分为:
1、实例构造函数
2、私有构造函数
3、静态构造函数
构造函数是一种特殊的方法,主要是为了给初始化对象赋初值。
1、实例构造函数
使用new表达式创建某个类的对象时,会使用实例构造函数创建和初始化所有实例成员变量。
public class ProgramTest
{ int j; public ProgramTest() { j = 4; Console.WriteLine("I am ProgramTest,{0}", j); } static void Main(string[] args) { ProgramTest pt = new ProgramTest(); Console.Read(); } 结果为:I am ProgramTest,4 |
在此次实验中,我们首先定义了一个私有成员j,经过初始化给他赋了一个初值4,当我实例化类ProgramTest时,就会执行实例构造函数。
诸如此类不带参数的构造函数叫“默认构造函数”,如果某个类没有构造函数,则会自动生成一个默认构造函数,并使用默认值来初始化对象字段。
public class ProgramTest { int j; public ProgramTest() { Console.WriteLine("I am ProgramTest,{0}", j); } static void Main(string[] args) { ProgramTest pt = new ProgramTest(); Console.Read(); } } 结果为:I am ProgramTest,0 |
也可以创建带有参数的构造函数
public class ProgramTest
{ int j; public ProgramTest(int i) { j = 2; Console.WriteLine("I am ProgramTest,i={0},j={1}",i, j); } static void Main(string[] args) { ProgramTest pt = new ProgramTest(1); Console.Read(); }
结果为:I am ProgramTest i=1,j=2 |
那若是一个类中既有无参构造函数,又有有参构造函数那会怎么样呢?
public class ProgramTest
{ int j; public ProgramTest() { j = 3; Console.WriteLine("I am ProgramTest 默认构造函数,j={0}", j); } public ProgramTest(int i) { j = 2; Console.WriteLine("I am ProgramTest 有参构造函数,i={0},j={1}",i, j); } static void Main(string[] args) { ProgramTest pt1 = new ProgramTest(); ProgramTest pt2 = new ProgramTest(1); Console.Read(); }
结果为:I am ProgramTest 默认构造函数 j=3 I am ProgramTest 有参构造函数 i=1,j=2 |
可见,若是两者同时存在,那么看类实例化时,是怎么实例的。