1:构造方法的可访问性

构造方法可以是共有的或私有的。


2:默认构造方法

默认构造方法就是不带参数的构造方法。

如果没有为类添加任何构造方法,系统会自动生成一个隐藏的默认构造方法;但如果用户添加了任意一个构造方法,系统就不会自动生成默认的构造方法了。也就是说,如果用户为类添加了自己的定义的构造方法,那么就只能使用用户定义的这些构造方法来生成对象了。


3:构造方法调用构造方法

格式如下:

构造方法名(参数列表) : this(参数列表)

{

    方法体

}

举例:

class DerivedClass
{
    public DerivedClass() : this(100)
    {
        Console.WriteLine("Derived Class's Default Constructor");
    }

    public DerivedClass(int i)
    {
        Console.WriteLine("Derived Class's Constructor with Param: {0}", i);
    }
}

和Java的区别

Java中,构造方法调用另一个构造方法也是使用this(参数)的方法,但Java是将其作为一条语句放在方法体中的,而且这条this语句还必须是方法体的第一条语句。


4:在继承结构中,父类对象的生成

和C++、Java一样,如果有继承结构,那么在生成子类对象时会先生成父类对象。

默认情况下,在执行子类的构造方式(所有的构造方法)时会先自动调用父类的默认构造方法以生产父类对象,所以,如果在子类的构造方法中没有特别说明,而父类又没有默认的构造方法,系统会提示出错。

一般情况下,我们会在子类的构造方法中明确的告诉系统,子类的构造方法要调用父类的哪个构造方法。

格式如下:

子类的构造方法名 : base(参数列表)

{

方法体

}

这样,在执行这个构造方法之前,系统会先调用父类的相应的构造方法。

与Java的区别:Java中使用的关键字是super,而且也是作为语句放置于方法体的开头。