C# 如何从子类继承构造函数
我正在写一个抽象基类。我希望从它继承的所有类都继承一个构造函数,该构造函数对所有类都执行相同的操作。这可能吗?在派生类构造函数中,您需要像这样调用基本构造函数:C# 如何从子类继承构造函数,c#,C#,我正在写一个抽象基类。我希望从它继承的所有类都继承一个构造函数,该构造函数对所有类都执行相同的操作。这可能吗?在派生类构造函数中,您需要像这样调用基本构造函数: base(param1,param2,...) 如果不显式调用基类构造函数,则将调用基类中的默认构造函数(如果存在)。否则,您将得到一个编译错误。在派生类构造函数中,您需要调用基本构造函数,如下所示: base(param1,param2,...) 如果不显式调用基类构造函数,则将调用基类中的默认构造函数(如果存在)。如果没有,您将
base(param1,param2,...)
如果不显式调用基类构造函数,则将调用基类中的默认构造函数(如果存在)。否则,您将得到一个编译错误。在派生类构造函数中,您需要调用基本构造函数,如下所示:
base(param1,param2,...)
如果不显式调用基类构造函数,则将调用基类中的默认构造函数(如果存在)。如果没有,您将得到一个编译错误。使用受保护的构造函数就可以了
public abstract class A
{
protected A(string v) { V = v; }
public string V { get; protected set; }
}
public class AA : A
{
public AA(string v) : base (v) {}
}
使用受保护的构造函数就可以了
public abstract class A
{
protected A(string v) { V = v; }
public string V { get; protected set; }
}
public class AA : A
{
public AA(string v) : base (v) {}
}
如果抽象基类有一个默认构造函数,即没有参数的构造函数,则派生类构造函数将自动调用它,除非它们显式调用基类的另一个构造函数
abstract class B
{
protected B()
{
...
}
protected B(object foo)
{
...
}
}
class D : B
{
public D()
: base() // not actually necessary, since it's called implicitly
{
}
public D(object foo)
: base(foo)
{
}
}
如果抽象基类有一个默认构造函数,即没有参数的构造函数,则派生类构造函数将自动调用它,除非它们显式调用基类的另一个构造函数
abstract class B
{
protected B()
{
...
}
protected B(object foo)
{
...
}
}
class D : B
{
public D()
: base() // not actually necessary, since it's called implicitly
{
}
public D(object foo)
: base(foo)
{
}
}
我认为OP试图避免实现具有相同签名的构造函数。您不能在C中继承构造函数。只能像在代码中那样从基调用这些构造函数。我认为这是C最大的失败之一。基类中声明的每个公共方法在派生类中都自动可用,但所有构造函数都需要显式定义。每次我必须编写同一个构造函数来调用基本实现时,我都会诅咒C团队。我认为OP试图避免实现具有相同签名的构造函数。您不能在C中继承构造函数。只能像在代码中那样从基调用这些构造函数。我认为这是C最大的失败之一。基类中声明的每个公共方法在派生类中都自动可用,但所有构造函数都需要显式定义。每次我必须编写同一个构造函数来调用基类实现时,我都会诅咒C团队。如果基类没有默认构造函数,也许你可以用派生类的要求来完成答案。如果基类没有,你可以用派生类的要求来完成答案有一个默认构造函数