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,而且也是作为语句放置于方法体的开头。