トレイトを使用して多重継承を偽装することもできますが、基本的な違いは概念的なものだと思います。親子関係は「is-a」関係です。
Table の子と PicknickTable の子を持つ Furniture クラスがある場合、Picknicktable は Table は Furniture です (うーん、家具はそのように数えられますか? nvrmnd)。
トレイトの場合は、次のように言うだけです。サーフェスに何かを配置するコードを書き続けるのは嫌いなので、"putStuffOnThisThing" トレイトを書きます。これは継承ではありません!このような推論の背後にある基本的な誤りは、階層を示す別の方法として特性を見て、そうすべきではないということです。これは、実際の優れた設計の代わりになるものではありません。これはツールボックスのトリックであり、複数の継承を誤用する可能性がありますが、いくつかの行を何度も書くことを避ける方法として使用する方がよい場合があります。
したがって、比較を弁護するために: トレイトには多重継承と同じ問題がいくつかあります。たとえば、同じ名前を持つものが複数ある場合にエイリアシングで対処する必要がある問題などです。これは正確にはダイヤモンドの問題ではありませんが、非常に近いものです。