クラスを継承するクラスを使用できないのはなぜShapes
ですか?
クラスをいくつかのメソッドで拡張する必要がありますがRectangle
、このクラスを を使用するのと同じ方法で使用したいのですがShape
、どうすればよいですか?
から派生したクラスを書くことができShape
ます。から派生するクラスを作成することはできませんRectangle
。これは封印されているためです。
Jon が指摘したように、Rectangle は封印されています。
何をしようとしているかに応じて、いくつかのオプションがあります。
Rectangle を含む独自のクラスで Shape を拡張し、構成によって機能を拡張できます。これらのオブジェクトは、「is」チェックでは Rectangles とは見なされません。
Rectangle の拡張メソッドを作成すると、それらを任意の Rectangle で使用できます。その場合、オブジェクトは引き続き Rectangles と見なされます。
例えば
public static class RectangleExtensions {
public static bool IsSquare(this Rectangle r) {
return r.Width == r.Height;
}
}