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

本文关键字:base 构造函数 调用 我们 | 更新日期: 2023-09-27 18:17:41

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

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()函数,但这与其说是解决方案,不如说是一种解决方法。

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

构造

函数不是继承的。

MyConcreteSubClassbaseMyAbstractSubClass,并且MyAbstractSubClass没有接受字符串的构造函数。

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

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

然后你可以用MyConcreteSubClassbase("hello")来调用它。

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

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

您必须从基类继承才能编译它:)