これまで読んだ記事の中で、多重継承を実装すると複雑さが増すと述べられています。しかし、それが消費者側または言語開発者側の複雑さを増すのだろうか?
たとえば、あいまいさを克服するために、次のようなことを行うことができます。
class Artist{
public void Draw(){ }
}
class Cowboy {
public void Draw() { }
}
class Person : Artist, Cowboy{
}
ここでは、2つの同じ署名付きメソッドがあるように見えますが、this.base.Artist.Draw()
orthis.base.Cowboy.Draw()
やtypeの外側などの構文は、そのインスタンスから、person.base.Cowboy.Draw()
このあいまいさを解決するのに十分に見えます。
それで、ここで話している曖昧さと複雑さは何ですか。世の中には非常に多くの製品がありますが、消費者の観点からは、私たちが扱うのはそれほど複雑ではありません。
base
キーワードは多くの場合、あいまいさを防ぐことができます:
person.base.Cowbow.Draw();
(new Person()).base.Cowboy.Draw();
((Person) someInstance).base.Cowboy.Draw();
this.base.Cowboy.Draw();
- 等