★このページは書きかけです。 !!!インタフェースは多態性の一種 オブジェクト指向には *多態性 (ポリモーフィズム:Polymorphism) という機能があります。\\ 多態性とは、処理(関数またはメソッド)の定義(呼び出し名+型+引数)が同一であっても、処理内部の動きをクラスごとに替えられる機能のことです。\\ 例えばJavaにおいては、 #abstractメソッド #Interface (インタフェース) #override(オーバーライド) という機能として実現されています。\\ !!インタフェースは役割 [責務はクラスではない]の中で書いたように、 *インタフェースは役割 と理解して下さい。一つ例を出します。 #自転車 #バイク #自動車 #飛行機 これらの役割は何でしょうか? 答えは簡単、 *乗り物 ですね。いずれも、人を乗せて運ぶことがその役割です。\\ 少し考えてみれば判りますが、 *「今日は乗り物で来た。」ともし言われたら、 *「何に乗ったの?」という疑問が起こると思います。 一方で、\\ *「今日は自転車で来た。」と聞いて *「何に乗ったの?」とは誰も思いません。 これは、\\ *役割では実体を決められない からです。 *責務でクラスは決まらない のと同じ事です。\\ !!実体を並べてみないと多態性を定義できない 多態性について注意すべき点は、設計時と実装時で視点を180度替える必要があることです。\\ !【設計時】 #実体(クラス)を先に並べて比較する。 #共通的な処理を抽出する。 #その処理を再定義する(呼び出し名、戻り値、引数を共通化する)。 #インタフェースの場合はインタフェース名を決める。 上記のような流れになりますが、特にインタフェースを決める場合、それよりも先に実体(クラス)が無いと共通化は出来ません。乗り物の例と同じです。つまり、\\ *クラス→インタフェース の順番で設計していくことになります。\\ !【実装時】 #設計時に決めたインタフェースまたはabstractメソッドを実装する。 #それらを実現するためのクラスを実装する。 言うまでもありませんが、インタフェースやabstractメソッドが先に無いと実現クラスの実装は出来ません。つまり、\\ *インタフェース→クラス の順番で実装していくことになります。\\ *多態性を利用する際は、まず最初に個別の実体(クラス)を並べてみて共通化する必要がある ことに注意して下さい。インタフェースやabstractメソッドがクラスよりも先に出来るわけではありません。\\ 視点を180度替える必要があるというのはこのことです。\\