该怎么办? 要将特定边属性保存为方形,请使用矩形属性?
public Square(double edge) : base(edge, edge)
{
}
OR
public Square(double edge) : base(edge, edge)
{
Edge = edge;
}
public Rectangle(double width, double height)
{
Width = width;
Height = height;
}
答案 0 :(得分:4)
在Edge
中添加新的Square
属性并不重要,但有一些更重要的事情。这就是一致性。
如果你的课程是不可改变的,那就好了。但是,如果您的类是可变的,则需要与Edge
中的三个(或两个,如果您决定不添加Square
)属性保持一致。当宽度改变时,高度也应该改变。当您更改Edge
时,Width
和Height
都应该更改。
class Square : Rectangle {
public override double Width {
get { return base.Width; }
set {
base.Width = value;
base.Height = value;
}
}
public override double Height {
get { return base.Height; }
set {
base.Width = value;
base.Height = value;
}
}
public double Edge {
get { return Width; }
set {
base.Width = value;
base.Height = value;
}
}
public Square(double edge) : base(edge, edge) {
}
}
请注意,构造函数现在为空,因为Edge
实际上并未存储"。当您访问它时,它只返回宽度。
P.S。我不认为Edge
是一个好名字。我称之为SideLength
。