オブジェクト指向ってこういうこと?(4) インターフェイスの使い方

いろいろ書き直し。

要するに。

インターフェイスは、”仕様定義”。

インターフェイスの例

私的に、上手いなあと思った例示説明。
『パソコンにUSBポートとかシリアルポートがあって。
 USBマウスもPS2マウスもどっちも使えて、
 USBキーボードAとかUSBキーボードBも、どっちも使える状態』

テレビとリモコンなら、電気店で「かんたんリモコン」なんて買ってきたとします。
「かんたんリモコン」でchannel1()は地デジの1チャンネル固定ですが、
TVに付属の標準リモコンでは、「地デジ」「地アナ」「BS」「CS」のモードがあって、モードで返り値が変わります。

こういう場合への対応が、「インターフェイス

interface remo_con
{
    public static function channel1();
(略)
}

クラスは、対応するインターフェイスをimplementして作成する。

するとクラスには、「インターフェイスに書かれたメソッド」を、全てフォロー(対応)する必要(義務?)が生じる。
 
クラス側で、『インターフェイスが決めたメソッドに、一部対応しない』は、エラーになる。


そして、クラス側で『インターフェイスが定義してないメソッドを勝手に追加』しても、使えません。


インターフェイスは、使用可能にしておくべき機能(関数/メソッド名)全部を、定義する。
だから、インターフェイスを見るだけで、使用可能な機能がわかる。

定義がちゃんとしてれば、不用意なバグやトラブルを防げる。
だから、インターフェイスは大事。

ここが、「継承」とは違う点かなと思います。