QA@IT
«回答へ戻る

回答を投稿

オブジェクト指向における抽象化(逆に言えば具象化)のためには、抽象クラス(abstract class)とインターフェース(interface)がありますが、最初から、プログラムの仕様がきっちり決まっていて、かつ、その仕様が将来に渡って変更がないなら、抽象クラスだけを使ってもオブジェクト指向プログラミングはできますし、むしろそのほうがきれいで見やすいプログラムになると考えます。インターフェースを使わなくてもプログラムは書けます。

しかし、上述のように、プログラムの仕様がきっちり決まっていなかったり、あるいは、仕様が将来、変更がありうる場合は、インターフェースを使ったほうが潰しが効くプログラムになります。良い言葉で言えば、柔軟性を持たせられるということであり、悪い言葉で言えば、あとづけでごちゃごちゃ拡張できてしまう汚いプログラムになるということです。

なお、ご質問を拝見していると、「インターフェースについて」ではなく「インターフェースや抽象クラスについて」というご質問なのかなとも感じました。私は最初は、インターフェースはすっ飛ばして、抽象クラスだけを学ばれても良いと思います。

オブジェクト指向における抽象化(逆に言えば具象化)のためには、抽象クラス(abstract class)とインターフェース(interface)がありますが、最初から、プログラムの仕様がきっちり決まっていて、かつ、その仕様が将来に渡って変更がないなら、抽象クラスだけを使ってもオブジェクト指向プログラミングはできますし、むしろそのほうがきれいで見やすいプログラムになると考えます。インターフェースを使わなくてもプログラムは書けます。

しかし、上述のように、プログラムの仕様がきっちり決まっていなかったり、あるいは、仕様が将来、変更がありうる場合は、インターフェースを使ったほうが潰しが効くプログラムになります。良い言葉で言えば、柔軟性を持たせられるということであり、悪い言葉で言えば、あとづけでごちゃごちゃ拡張できてしまう汚いプログラムになるということです。

なお、ご質問を拝見していると、「インターフェースについて」ではなく「インターフェースや抽象クラスについて」というご質問なのかなとも感じました。私は最初は、インターフェースはすっ飛ばして、抽象クラスだけを学ばれても良いと思います。