声明了一个类Point它提供了两个构造函数它们是重载的一个是没有参数的Point构造函数和一个是有两个double参数的Point构造函数如果类中没有提供这些构造函数那么会CLR会自动提供一个缺省构造函数的但一旦类中提供了自定义的构造函数如Point()和Point(double x double y)则缺省构造函数将不会被提供这一点要注意
) 静态构造函数
静态构造函数是实现对一个类进行初始化的方法成员它一般用于对静态数据的初始化静态构造函数不能有参数不能有修饰符而且不能被调用当类被加载时类的静态构造函数自动被调用如
using SystemData;
class Employee
{
private static DataSet ds;
static Employee()
{
ds = new DataSet();
}
}
声明了一个有静态构造函数的类Employee注意静态构造函数只能对静态数据成员进行初始化而不能对非静态数据成员进行初始化但是非静态构造函数既可以对静态数据成员赋值也可以对非静态数据成员进行初始化
如果类仅包含静态成员你可以创建一个private的构造函数private TestClass() {…}但是private意味着从类的外面不可能访问该构造函数所以它不能被调用且没有对象可以被该类定义实例化
以上是几种类型构造函数的简单运用下面将重点介绍一下在类的层次结构中(即继承结构中)基类和派生类的构造函数的使用方式派生类对象的初始化由基类和派生类共同完成基类的成员由基类的构造函数初始化派生类的成员由派生类的构造函数初始化
当创建派生类的对象时系统将会调用基类的构造函数和派生类的构造函数构 造函数的执行次序是先执行基类的构造函数再执行派生类的构造函数如果派生类又有对象成员则先执行基类的构造函数再执行成员对象类的构造函数最后执行派生类的构造函数
至于执行基类的什么构造函数缺省情况下是执行基类的无参构造函数如果要执行基类的有参构造函数则必须在派生类构造函数的成员初始化表中指出如
class A
{
private int x;
public A( ) { x = ; }
public A( int i ) { x = i; }
};
class B : A
{
private int y;
public B( ) { y = ; }
public B( int i ) { y = i; }
public B( int i int j ):A(i) { y = j; }
};