C# 隐式调用父构造函数
我有一组类,其中我的基类有一个构造函数,该构造函数接受配置对象并处理将值传输到其属性的过程C# 隐式调用父构造函数,c#,C#,我有一组类,其中我的基类有一个构造函数,该构造函数接受配置对象并处理将值传输到其属性的过程 abstract class A { public A(ObjType MyObj){} } abstract class B : A {} class C : A {} class D : B {} class E : B {} 是否可以从子类隐式调用非默认基构造函数,或者我是否需要显式实现链上的签名才能通过构造函数实现 abstract class A { public A(ObjType MyO
abstract class A { public A(ObjType MyObj){} }
abstract class B : A {}
class C : A {}
class D : B {}
class E : B {}
是否可以从子类隐式调用非默认基构造函数,或者我是否需要显式实现链上的签名才能通过构造函数实现
abstract class A { public A(ObjType MyObj){} }
abstract class B : A { public A(ObjType MyObj) : base(MyObj){} }
class C : A { public A(ObjType MyObj) : base(MyObj){} }
class D : B { public A(ObjType MyObj) : base(MyObj){} }
class E : B { public A(ObjType MyObj) : base(MyObj){} }
如果是这样的话,是否最好只在基础中实现一个方法,然后让我的工厂在创建对象后立即调用该方法??不,构造函数不是继承的。您的类可以显式调用其父类的构造函数。但是,如果您希望您的类具有与父类相同的构造函数签名,则必须实现它们
例如:
public class A
{
public A(int someNumber)
{
}
}
// This will not compile becase A doesn't have a default constructor and B
// doesn't inherit A's constructors.
public class B : A
{
}
要实现这一点,您必须显式声明您希望B拥有的构造函数,并让它们显式调用A的构造函数(当然,除非A有默认构造函数)
不,隐式调用非默认基构造函数是不可能的,您必须使其显式化。您需要显式地实现它。另外,重要的是,在您的原始代码中,您将无法调用
new B()
,因为a
没有默认构造函数,而B
也不会调用a
有arg的构造函数。这正是我(适度地)担心的。我想我会选择助手方法路线。谢谢感谢和抱歉,为了简洁起见,我们省略了默认构造函数。
public class B : A
{
public B(int someNumber) : base(someNumber)
{
}
}