【发布时间】:2015-06-15 18:23:43
【问题描述】:
我对使用继承时的构造函数有些困惑:
我有以下代码:
class Program
{
static void Main(string[] args)
{
ClassD obj = new ClassD(10);
Console.ReadLine();
}
}
class ClassA
{
public ClassA(int a)
{
Console.WriteLine("Constructor of ClassA");
}
}
class ClassB : ClassA
{
public ClassB(int a)
{
Console.WriteLine("Parameterized Constructor of ClassB");
}
}
class ClassC : ClassB
{
public ClassC(int a)
{
Console.WriteLine("Parameterized Constructor of ClassC");
}
}
class ClassD : ClassC
{
public ClassD(int a)
{
Console.WriteLine("Parameterized Constructor of ClassD");
}
}
当我写上面的代码时.. 编译器生成 3 错误说:
'ClassA' does not contain a constructor that takes 0 arguments
'ClassB' does not contain a constructor that takes 0 arguments
'ClassC' does not contain a constructor that takes 0 arguments
那么为什么会抛出这些错误? 是否有必要在基类中有默认构造函数。
如果我不想在基类中使用默认构造函数但想在派生类中使用默认构造函数怎么办?
【问题讨论】:
-
为什么这会同时标记为 C# 和 C++,它不能同时标记。
标签: c# oop inheritance constructor