给定两个抽象类,父类具有构造函数
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()
函数,但这可能是解决方法而不是解决方案。
答案 0 :(得分:3)
Constructors are not inherited
base
的{p> MyConcreteSubClass
为MyAbstractSubClass
,而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来编译它:)