interfaceのメリットについて、最近聞かれてうまく答えることができなかったので、ネットで調べたり、ちょっと回りの人に相談したりして私なりの見解です。
例えが上手な人がいたので、以下はそのたとえ話を引用します。
例えば、鳥類とクラスを作成し、継承してニワトリやワシと言ったものを作成するとします。この中で、飛ぶという行為があった場合に、鳥類だけでなく、極端にいうと飛行機だって飛ぶという行為はあります。
つまりこの場合には、クラスを作成してしまうと、鳥類から継承して飛行機ができるのは明らかに間違った継承になります。
この場合には、intefaceで飛ぶというメソッドを宣言すればいいのです。
それ以外にも、利用する側の視点として、interfaceを確認すればどのようなことができるかを簡単に確認することができます。可読性の向上につながります。
ただし、何でもかんでもinterfaceにしてしまうと、肥大化したinterfaceができてしまうので注意が必要です。
つまりinterfaceとは、機能を持っているというもので、クラスは役割?といっていいのかわかりませんが、そういった違いがあります。
例えが上手な人がいたので、以下はそのたとえ話を引用します。
例えば、鳥類とクラスを作成し、継承してニワトリやワシと言ったものを作成するとします。この中で、飛ぶという行為があった場合に、鳥類だけでなく、極端にいうと飛行機だって飛ぶという行為はあります。
つまりこの場合には、クラスを作成してしまうと、鳥類から継承して飛行機ができるのは明らかに間違った継承になります。
この場合には、intefaceで飛ぶというメソッドを宣言すればいいのです。
それ以外にも、利用する側の視点として、interfaceを確認すればどのようなことができるかを簡単に確認することができます。可読性の向上につながります。
ただし、何でもかんでもinterfaceにしてしまうと、肥大化したinterfaceができてしまうので注意が必要です。
つまりinterfaceとは、機能を持っているというもので、クラスは役割?といっていいのかわかりませんが、そういった違いがあります。
※コメント投稿者のブログIDはブログ作成者のみに通知されます