4

为什么我不能使用继承类的Shapes

我需要Rectangle用一些方法扩展类,但我想以与使用 a 相同的方式使用此类,我该Shape怎么办?

4

2 回答 2

6

可以编写一个派生自Shape. 您不能编写派生自 的类Rectangle,因为它是密封的。

于 2012-06-21T16:34:28.097 回答
5

正如乔恩指出的那样,矩形是密封的。

根据您要执行的操作,有几个选项是:

  1. 您可以使用自己的包含 Rectangle 的类来扩展 Shape,并通过组合来增强功能。这些对象不会被视为“是”检查中的矩形。

  2. 您可以为 Rectangle 编写扩展方法,然后您可以在任何 Rectangle 上使用它们。那么这些对象仍将被视为矩形。

例如

public static class RectangleExtensions {
    public static bool IsSquare(this Rectangle r) {
        return r.Width == r.Height;
    }
}
于 2012-06-21T16:38:50.050 回答