以下の例では、ClassyFooを使用してクラスFooを拡張し、ClassyFooによって作成されたBarインスタンスがClassyFooから継承され、Fooによって作成されたBarインスタンスが引き続きFooから継承されるようにすることは可能ですか?
例えば:
class Foo
{
protected Foo()
{
Console.WriteLine("Setting up Foo");
}
public static void Show()
{
Console.WriteLine("Showing Foo");
var bar = new Bar();
}
}
class ClassyFoo : Foo
{
public ClassyFoo() : base()
{
Console.WriteLine("Setting up Classy Foo");
}
public new static void Show()
{
Console.WriteLine("Showing Classy Foo");
var bar = new Bar();
}
}
class Bar: Foo
{
public Bar() : base()
{
Console.WriteLine("Setting up Bar");
}
}
ClassyFoo.Show()の目的の出力は次のとおりです。
上品なFooの
表示Fooの設定
上品なFooの
設定バーの設定
そして、Foo.Show()の出力は次のとおりです。
Fooの
設定Fooの
設定バーの表示
状況は、クラスBarがFooにいくつかの構成/特殊化を追加することですが、ClassyFooも同様です。ただし、BarとClassyFooの両方の特殊化が同じオブジェクトに存在する可能性があります。
ClassyFooから継承する重複するBarを避けようとしています。実際には複数のバーがありますが、ClassyFooは1つしかないため、多くの重複が発生します。