interface ITurtle
{
void Fight();
void EatPizza();
}
interface ILeonardo : ITurtle
{
void UseKatana();
}
interface IRaphael : ITurtle
{
void UseSai();
}
interface IDonatello : ITurtle
{
void UseBo();
}
interface IMichelangelo : ITurtle
{
void UseNunchuku();
}
4 つすべてを実行できるグランド タートルを作成したい場合はどうすればよいですか? 私はコーディングしたい:
class GrandTurtle : IMichelangelo, IDonatello, IRaphael, ILeonardo
{
// Implementation not shown for brevity.
}
これは可能ですか?今では、それぞれ 4 回実装する必要があるようFight()
ですEatPizza()
。しかし、これら 2 つの共通機能は解決され、一度実装するだけで済むと思いますよね?
を継承せずに 4 つの中間インターフェイスを作成してITurtle
から、GrandTurtle
実装することもできましたITurtle
。ITurtle
これにより、インターフェイスの継承の問題は解決されますが、5 番目の兄弟のように見えるため、意味的に間違っているように見えます。さらに、タートル固有のクラスを作成できるようにしたいと考えていますclass BostonLeonardo : ILeonardo
。
私は多くの場所から読みましたが、それは終わりのない議論のようです.「インターフェース内の継承」は完全に問題ないと言う人もいれば、そうではないという人もいます.どうして。