オブジェクト指向を実現するのにインターフェースは必要ない。
オブジェクト指向は全てをオブジェクトとしてみなすというわけではないが、
ここでは全てをオブジェクトとしてみなす指向(完全オブジェクト指向)で論じる。
完全オブジェクト指向においては現実世界そっくりそのままを表現すれば
良いだけであるが、プログラミングの世界は言葉だけの表現、更にいうと0と1での
表現のみしか持ち合わせていないため普通に考えて無理である。
よって完全オブジェクト指向はすでに破綻していると言える。
しかしながら、可能な限り完全オブジェクト指向を突き詰めていくと、とりあえず
インターフェースは表現できないということになる。
つまり、Java言語等にみられるプログラミング言語仕様においてインターフェースが定義されているものは純粋なオブジェクト指向言語とは言えないのである。
Javaにおいてはこのインターフェースによって多様性なり多態性を表現しているが、スーパークラスとサブクラスを仕様、実装の関係で使うことで多様性を実現できないこともない。
つまり、インターフェースをオブジェクト指向設計時に考えるということは既に言語依存になってしまっているということになる。
Javaにインターフェースが必要かそうでないかという議論はオブジェクト指向が
有用か、そうでないかの議論になるためここでは言及しないが、よりよいプログラミング言語というものは常に進化しつづけるものであると考える。
仕様と実装のはざまを考えるのもまた大切だと思う。