1.构造函数
构造函数是用来初始化对象的,只能由new运算符调用。构造函数与类同名,没有返回值,不能用void修饰,可以有public和private两种修饰符,当用private修饰时外界不能访问到这个构造函数。
C#有一个无参的默认构造函数,如果需要做特别的初始化可以自己添加构造函数,如
class DisplayClass{ public DisplayClass(string displayString) { Console.WriteLine(displayString); Console.WriteLine(); } public DisplayClass()//默认构造函数 { } }
2.构造函数执行顺序
类继承时子类需要调用父类的构造函数才能正确初始化父类,如果子类没有显式调用父类的构造函数,系统会调用父类的默认构造函数,可以使用构造函数初始化器指定需要调用的父类构造函数,如下使用base调用父类的构造函数
class BaseA { public BaseA() { Console.WriteLine("基类构造方法被调用"); } public BaseA(string baseString) { Console.WriteLine(baseString); } } class DriveB : BaseA { public DriveB():base("基类构造方法被调用") { Console.WriteLine("继承类构造方法被调用"); } }
也可以使用this调用当前类其他构造函数
class Person { int age; string name; public Person() { } public Person(int age) { this.age = age; } public Person(int age, string name):this(age) { this.name = name; } }
当有继承关系时构造函数的调用顺序 :System.Object的构造函数-> 基类的构造函数->子类的构造函数,因为所有类都是继承Object类的,所以最先调用Object类的构造函数