不包含带0参数的约束器

时间:2017-02-20 14:21:14

标签: c#

我知道这个问题已被提出,但所有解决方案都没有解决我的问题。我有继承一个类的问题,它告诉我有些东西丢失了,这是我不知道的,有什么想法吗?非常感谢!!

这是我的代码!

 public class Rectangle : Shape  (shape is an other file which is work)
{
    private Pen pen = new Pen(Color.Blue);
    private  int size; 

    protected Rectangle(Point position, int size) : base(position)
    {
        this.size = size;
    }
        public Rectangle(int x, int y, int size) : base(new Point(x, y))
    {
        this.size = size;
    }
    override public void Draw(Graphics r)
    {
        r.DrawRectangle(pen, 600, 100 , 50, 50);

    }
}

public class Square : Rectangle (here it does not work when inherit)
{
    override public void Draw(Graphics r)  
    {
        r.DrawRectangle(pen, 300, 100, 50, 50);
    }

}

2 个答案:

答案 0 :(得分:2)

您需要在Square中定义一个构建函数,该构造函数将调用基础Rectangle

public class Square : Rectangle (here it dose not work when inherit)
{
    public Square(Point position, int size) : base(position, size) 
    {
    }

    override public void Draw(Graphics r)  
    {
        r.DrawRectangle(pen, 300, 100, 50, 50);
    }

}

请参阅: base(position, size)代码。因为你继承了,你也继承了Rectangle的构造函数,所以你可以做我已经完成的事情并将参数传递给基础,或者你可以使Square无参数但是定义你的值: : base(new Point(200,200), 200)

答案 1 :(得分:1)

Rectangle有两个构造函数。如果您要继承Rectangle,则 可以调用其中一个构造函数。对于您拥有的每个构造函数,您的Square必须能够调用base(Point position, int size)base(int x, int y, int size)