构造函数
class MyClass
{
public MyClass()
{
// code
//这是类的默认构造函数,因为是公共的,所以类的对象可以用这个构造函数来实例化
}
}
class MyClass
{
private MyClass()
{
// code
//这是类的私有的默认构造函数,不能用这个构造函数创建该类的对象实例(是不可创建的)
}
}
也可以给类添加非默认的构造函数
class MyClass
{
public MyClass()
{
// code
}
public MyClass(int intVal)
{
//这是非构造的默认函数
}
}
构造函数的执行序列
public class MyBaseClass
{
public MyBaseClass()
{
// code
}
public MyBaseClass(int i)
{
}
}
public class MyDerivedClass : MyBaseClass
{
public MyDerivedClass()
{
// code
}
public MyDerivedClass(int i)
{
}
public MyDerivedClass(int i, int j)
{
}
}
如果这样实例化:MyDerivedClass myObj = new MyDerivedClass();
那构造函数的执行顺序如下:
System.Object.Object();
MyBaseClass.MyBaseClass();
MyDerivedClass.MyDerivedClass();
如果这样实例化:MyDerivedClass myObj = new MyDerivedClass(4);
那构造函数的执行顺序如下:
System.Object.Object();
MyBaseClass.MyBaseClass();
MyDerivedClass.MyDerivedClass(int i);
如果这样实例化:MyDerivedClass myObj = new MyDerivedClass(4,8);
那构造函数的执行顺序如下:
System.Object.Object();
MyBaseClass.MyBaseClass();
MyDerivedClass.MyDerivedClass(int i, int j);
而用base可以在实例化过程指定使用基类中具有指定参数的构造函数:
public class MyDerivedClass : MyBaseClass
{
public MyDerivedClass() : base(5)
{
}
……
}
那这段代码的构造函数的执行顺序如下:
System.Object.Object();
MyBaseClass.MyBaseClass(int i);
MyDerivedClass.MyDerivedClass();
除了base之外,还可以用this作为构造函数初始化器。它指定在调用指定的构造函数前,对当前类使用非默认的构造函数:
public class MyDerivedClass : MyBaseClass
{
public MyDerivedClass() : this(5, 6)
{
// code
}
public MyDerivedClass(int i, int j) : base(i)
{
}
}
如果这样实例化:MyDerivedClass myObj = new MyDerivedClass();
那构造函数的执行顺序如下:
System.Object.Object();
MyBaseClass.MyBaseClass(int i);
MyDerivedClass.MyDerivedClass(int i, int j);
MyDerivedClass.MyDerivedClass();