【问题标题】:Cannot inherit Shapes无法继承形状
【发布时间】:2023-03-07 04:28:01
【问题描述】:

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

我需要用一些方法扩展Rectangle类,但我想像使用Shape一样使用这个类,我该怎么做?

【问题讨论】:

  • 小心你不要写 Liskov 违规......扩展Shapes 时很容易做到......你想如何扩展Rectangle
  • "为什么我不能使用继承 Shape 的类?" - 你可以“我需要用一些方法来扩展 Rectangle 类,但是我想像使用 Shape 一样使用这个类,我该怎么做?”创建您自己的类来复制其功能并扩展它。

标签: c# .net wpf inheritance shape


【解决方案1】:

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

【讨论】:

  • 是的,我想写一个派生自 Rectangle 的类。按照我的链接,我的意思是形状命名空间。我不是很清楚。
  • @gliderkite:这是Shapes 命名空间,而不是Shape。你的问题很不清楚。无论如何,答案只是“矩形被密封”......
【解决方案2】:

正如 Jon 指出的,矩形是密封的。

根据您要执行的操作,有以下几种选择:

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

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

例如

public static class RectangleExtensions {
    public static bool IsSquare(this Rectangle r) {
        return r.Width == r.Height;
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-15
    • 2010-12-26
    • 2013-03-04
    • 2018-01-31
    • 2013-07-13
    相关资源
    最近更新 更多