那么我们该如何获得基类的构造函数和自身的构造函数呢?
我们知道基类的初始化工作由基类的构造函数完成,派生类的初始化工作则有派生类的构造函数完成,
但是这样就产生了派生类构造函数的执行顺序问题。
当基类没有构造函数,派生类也没有构造函数时,派生类新曾成员的初始化工作由其他公有函数来完成。
public class A { int test=0; public void sum() { test++; Console.WriteLine("I am test ={0}" ,test); } } class B : A { int i; public void PrintInt() { i = 3; Console.WriteLine("I am i ={0}", i); } } class InheritanceTest1 { static void Main(string[] args) { B b = new B(); b.PrintInt(); Console.Read(); } } |
如果只有派生类定义构造函数时,只需构造派生类对象即可。对象的基类部分使用默认构造函数来自动创建。
当基类和派生类都定义有构造函数时,那么执行顺序会怎样呢?
如果基类中是没有参数的构造函数,那么他可以隐式的被派生类执行,也就是说,派生类根本不需要包含构造函数
如果基类中是没有参数的构造函数,在派生类中可以自定义有参数的构造函数
public class A { int test=0; public A() { test = 5; Console.WriteLine("I am A 公有默认构造函数 ,test={0}", test); } } class B : A { } class InheritanceTest1 { static void Main(string[] args) { B b = new B(); Console.Read(); } } |