シンプルに「なぜinterfaceを使うのか」を考察


それは実装をシンプルにして部品化を促すため

interfaceはカオスな現実世界と厳格なコンピュータ世界をつなぐ、あるいは分離する役割を担っています。
部品化しやすくするために、実装はできるだけシンプルに、複雑さはinterfaceがブロック!

interfaceでは多重継承を許し、一般クラスでは許さない理由

interfaceはカオスな現実世界に近い業務仕様を記述するため、多重継承を許容することで、実装レベルの一般クラスの複雑化を代替します。

※補足
シンプル化:問題領域を小さくすることで、問題の連鎖や波及を制限し、部品としての汎用性が向上します。
多重継承を許容:言語によって差異はありますが、interfaceの意味を尊重するなら、他の言語でも一般クラスをinterfaceのようにするなどして、多重継承を自主的に制限することがオブジェクト指向の本来の利点を活用することになると考えます。

おまけ

interface間の関係性や条件を規定するのは、設計者です。
実装者は業務の複雑さを意識することなく、設計に従って淡々とコーディングしてゆきます。
ただし、interface内に実装(処理)条件を持ち込まないよう注意することが重要です。
逆に実装(処理)にinteface間の(業務)条件を持ち込まないよう注意することが重要です。
そのために、interfaceでは複雑さを表現するため多重継承を許可し、実装では複雑さを防止するため多重継承を制限します。

また、業務と処理を関連付ける機能は双方の共通言語になります。