我们可以在 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()
函数,但这与其说是解决方案,不如说是一种解决方法。
构造
函数不是继承的。
MyConcreteSubClass
的base
是MyAbstractSubClass
,并且MyAbstractSubClass
没有接受字符串的构造函数。
如果你想让构造函数"继承",你必须重新声明它:
public abstract class MyAbstractSubClass : MyAbstractBaseClass
{
public MyAbstractSubClass (string arg) : base(arg) {}
// Properties and Methods
}
然后你可以用MyConcreteSubClass
的base("hello")
来调用它。
子类中的构造函数也需要一个主体:
public class MyConcreteSubClass : MyAbstractBaseClass
{
public MyConcreteSubClass() : base("hello")
{
}
}
public class MyConcreteSubClass : MyAbstractBaseClass
{
public MyConcreteSubClass():base("hello") {}
}
您必须从基类继承才能编译它:)