由此可以看见,基类的构造函数被执行,在派生类中被调用。
如果基类定义了带有参数的构造函数,那么此构造函数必须被执行,且在派生类中实现该构造函数,此时我们可以使用base关键字
class A { int test=0; public A(int i) { test = i; Console.WriteLine("I am A 公有有参构造函数 ,test={0}", test); } } class B : A { public B(int j):base(j) { Console.WriteLine("I am B 公有有参构造函数,j={0}",j); } } class InheritanceTest1 { static void Main(string[] args) { B b = new B(1); Console.Read(); } } |
由此可见:派生类隐式执行基类中带有参数的构造函数,在程序中基类定义了带有参数的构造函数,在其派生类中被继承,并使用base关键字调用基类中的构造函数来传送参数。
我们可以从代码中看到在创建派生类的对象后,程序首先运行的是基类的构造函数中的内容,然后才是派生类中的内容。
如果派生类的基类也是派生类,则每个派生类只需负责其直接基类的构造,不负责间接基类的构造,并且其执行构造函数的顺序是从最上面的基类开始的,直到最后一个派生类结束。
相关链接: