基本クラスA
にはサブクラスがありB
、B
サブクラスがありC
ます。A
仮想メソッドを実装し、実装doStuff()
せB
ず、実装C
します。からの の実装C
を呼び出したい(これはの の実装内から実行しますが、それはあまり重要ではありません)。A
doStuff()
C
doStuff()
A::doStuff();
または:
B::doStuff();
最初のものは、実際の実装を参照しているため、より明確に見えます。B
一方、2 番目のdoStuff()
方法は、後でA
. どちらがより標準的ですか? どちらがより危険ですか?
B::doStuff()
警告が発生しなかったことに少し驚きましたがB
、基本クラスからのものであっても、定義により実装があると思います。基本クラスと実装のチェーンは、任意に長く複雑にすることができますか? たとえば、それぞれが前のサブクラスをA
通過した場合Z
、チェーンのどこにでも実装を持つことができますか?クラスのメソッドを呼び出すと、実装が見つかるまで「チェーンを上る」だけですか?