我知道这个问题已被提出,但所有解决方案都没有解决我的问题。我有继承一个类的问题,它告诉我有些东西丢失了,这是我不知道的,有什么想法吗?非常感谢!!
这是我的代码!
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);
}
}
答案 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)