4

クラスを継承するクラスを使用できないのはなぜShapesですか?

クラスをいくつかのメソッドで拡張する必要がありますがRectangle、このクラスを を使用するのと同じ方法で使用したいのですがShape、どうすればよいですか?

4

2 に答える 2

6

から派生したクラスを書くことができShapeます。から派生するクラスを作成することはできませんRectangle。これは封印されているためです。

于 2012-06-21T16:34:28.097 に答える
5

Jon が指摘したように、Rectangle は封印されています。

何をしようとしているかに応じて、いくつかのオプションがあります。

  1. Rectangle を含む独自のクラスで Shape を拡張し、構成によって機能を拡張できます。これらのオブジェクトは、「is」チェックでは Rectangles とは見なされません。

  2. Rectangle の拡張メソッドを作成すると、それらを任意の Rectangle で使用できます。その場合、オブジェクトは引き続き Rectangles と見なされます。

例えば

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