クラスが実装するべきメソッドの一連の仕様を定義するためのコンパイル時の契約
抽象メソッドや定数を含んでおり、クラスがこれを実装することによりそのメソッドのふるまいを定義
クラスが複数のインターフェースを実装することができる
→複数のインターフェースのメソッドを実装する必要あり
クラスが特定のふるまいを持つために使用される
クラス間の疎結合性高め、柔軟性のある設計が可能
追記)コメント文を引用
これは、実装する人への内容ですね。
インタフェースは、使う人のことを考えて、誰が何のためにどのように使うのかを明確化する役割もあります。
API (Application Program Interface) と呼ばれる仕様書がまさにそれですよね。
クラスには様々なパラメタやメソッドがありますが、用途に応じて使う機能を限定・明確化して提供するのがインタフェースともいえます。
生活の中にある身近なインタフェースでは、例えばテレビやBD/HDDレコーダを眺めてみると、前面やリモコンに操作インタフェースがあり、背面に接続インタフェースがあります。
装置内部は複雑な部品やプログラムで構成されていますが、使う人から直接触れられないように筐体(カプセル)に閉じ込められています。
テレビやBD/HDDレコーダを買ってきたら、業者や機械に強い友人に接続インタフェースにいろいろ接続してもらって、自分はリモコンを使って操作インタフェースを使うだけ。
誰が何のためにどのように使うのかに応じて、複数のインタフェースが実装されていますよね。
別の装置でもインタフェースが同じなら違和感なく使いこなすことができます。