在派生类中调用基类构造函数
在派生类中调用基类构造函数。
// keywords_base2.cs
using System;
public class BaseClass
{
int num;
public BaseClass()
{
Console.WriteLine( "in BaseClass() ");
}
public BaseClass(int i)
{
num = i;
Console.WriteLine( "in BaseClass(int {0}) ", num);
}
}
public class DerivedClass : BaseClass
{
// 该构造器调用 BaseClass.BaseClass()
public DerivedClass() : base()
{
}
// 该构造器调用 BaseClass.BaseClass(int i)
public DerivedClass(int i) : base(i)
{
}
static void Main()
{
DerivedClass dc = new DerivedClass();
DerivedClass dc1 = new DerivedClass(1);
}
}
/**//*
控制台输出:
in BaseClass()
in BaseClass(1)
*/
如果我在 // 该构造器调用 BaseClass.BaseClass()
public DerivedClass() : base()
{
}
我发现 public DerivedClass() : base()
{
}
和 public DerivedClass()
{
}
功能一样,那么base()在这里还有什么用????
难道不生成基类,可以生成子类吗,c#好像没有这个功能,所有必须要调用基类的构造函数
------解决方案--------------------如果没有明确指明base,编译器会自动添置调用基类的默认构造器,即不带参数的那个,所以
public DerivedClass() : base()
里面的base()是多余的