我们可以在C#中调用base.base构造函数吗?

时间:2014-08-13 06:32:36

标签: c# constructor

给定两个抽象类,父类具有构造函数

public abstract class MyAbstractBaseClass
{
  public MyAbstractBaseClass(string arg){}
}


public abstract class MyAbstractSubClass:MyAbstractBaseClass
{
  // Properties and Methods
}

,我们可以实例化一个具体的子类吗?

public class MyConcreteSubClass:MyAbstractSubClass
{
  public MyConcreteSubClass() // Call MyAbstractBaseClass("aStrign")
  {
  }

可以在基类中创建Init()函数,但这可能是解决方法而不是解决方案。

3 个答案:

答案 0 :(得分:3)

Constructors are not inherited

base的{​​p> MyConcreteSubClassMyAbstractSubClass,而MyAbstractSubClass没有接受字符串的构造函数。

如果你想要构造函数"继承",你必须重新声明它:

public abstract class MyAbstractSubClass : MyAbstractBaseClass
{
  public MyAbstractSubClass (string arg) : base(arg) {}
  // Properties and Methods
}

然后,您可以使用base("hello")中的MyConcreteSubClass来调用它。

答案 1 :(得分:0)

子类中的构造函数也需要一个body:

public class MyConcreteSubClass : MyAbstractBaseClass
{
    public MyConcreteSubClass() : base("hello")
    {
    }
}

答案 2 :(得分:0)

public class MyConcreteSubClass : MyAbstractBaseClass
{
  public MyConcreteSubClass():base("hello") {}   
}

你必须继承你的BaseClass来编译它:)