如何从具有重载构造函数的抽象类派生

时间:2014-08-01 18:39:13

标签: c# abstract-class abstract

我有一个抽象类,有2个重载的构造函数。我想要求所有派生类实现两个构造函数,因为这两个变体都支持A类提供的一些虚拟方法,这些方法对所有派生类都非常有用。我的模型类似于以下内容:

public abstract class A
{
    protected int _x {get;set;}
    protected int _y {get;set;}
    protected string _z {get;set;}

    public A(int x, int y)
    {
       _x = x;
       _y = y;
    }
    public A(int x, int y, string z)
    {
       _x = x;
       _y = y;
       _z = z;
    }
}

我知道我可以像这样声明第一个构造函数:

public class B : A { B(int x, int y) : base (x , y) {}

}

但是如何在派生类中声明Abstract类的第二个构造函数呢?

1 个答案:

答案 0 :(得分:4)

您根本不会继承构造函数。您声明了所需的构造函数,并确保每个构造函数都适当地链接到基类构造函数或同一类中的另一个构造函数。

例如,您可以拥有:

public class B : A
{
    public B(int x, int y) : base(x , y) {}    
    public B(int x, int y, string z) : base(x, y, z) {}

    public B() : base(0, 0, "Hello!") {}

    public B(int x) : this(x, 10, "Chained to B") {}
}