默认的是执行子类构造函数之前先执行父类构造函数;当父类构造函数有多个重载时,不加base 则自动匹配父类无参数的构造函数;base()关键字可以显示地指定参数以匹配父类的构造函数;EG:
class people
{
public string str = "moren";
public people(string s)
{
this.str = s;
Console.WriteLine(this.str);
}
public people()
{
Console.WriteLine(str);
}
}
class me : people
{
public me()
{
Console.WriteLine("me子类");
}
}
class you : people
{
public you()
: base("you子类")
{
Console.WriteLine("you子类");
}
}
static void Main(string[] args)
{
string str = "main";
me me1 = new me();
Console.WriteLine("===============================");
you you1 = new you();
Console.Read();
结果:
moren
me子类
===============================
you子类
you子类
加不加一样的.必定要调用父类的构造的..
关键在于,父类有多个构造,base可以让你选择调用合适参数的构造
在VB.NET里
如果父类的构造函数没有参数,编译器在编译的时候就会自动在派生类构造函数的顶端加上对 父类构造函数 的调用。
不过,如果父类的构造函数有参数。这个调用就必须由程序员来显式执行了。
因为编译器不可能知道你要传什么参数给 父类的构造函数。
C#里也应该差不多吧。
当然会执行父类的构造方法,是为了保证父类的成员会被正常的初始化