////////////////////////////////////////////////////////////////////////////////
//  << j252.java >>
//
//  クラス(5):インターフェース(概説)
//
//  ●インターフェース
//
//    ・予約語interfaceを使って定義する。
//    ・クラスと似ているが、定数と実体のないメソッドのみをもつ。
//   メソッドの実体は、インターフェースを使うクラス側で定義する。
//  ・インターフェースはオブジェクトを作れない。
//
// ●インターフェースの定義
//                       
//        interface インターフェース名 {
//          定数定義
//          メソッド宣言(名前と引数リストのみ)
//        }
//
//  ●インターフェースを使うプログラムの書き方
//
//  予約語implementsを使ってインターフェースの実装(メソッドの本体を記述する)
//  を行う。
//
//        interface インターフェース名 {
//          定数定義
//          メソッドの宣言(名前と引数リストのみ)
//        }
//        class クラス名 implements インターフェース名 {
//          クラスの定義(クラス独自の定義と、インターフェースのメソッドの
//            実装を行う)
//        }
//
//  ・インターフェース名は複数指定可能。
//    ・インターフェースで定義した定数は使えるが、クラスの中でインターフェースの
//     すべてのメソッドを定義する必要がある。未定義にしておくとエラーになる。
//  ・javac クラス名.java でコンパイルすると、2つのクラスファイル
//   (クラス名.class, インターフェース名.class)が作成される。
//
// ●インターフェースの効果
//      
//  メソッドの名前だけ決め、実体は未定義にするインターフェースを実装するクラス
//  では、どれも同じメソッド名を持つことを強制される。
//  このことから、メソッドの仕様を統一的に扱える。
//
// ●クラスの継承との違い
//
//   クラスの継承では、親クラスのメンバを共有でき、オーバーライドすれば
//  メソッドの実体を変更できる。すなわち、親子関係にあるクラス間で共通の動作を
//  持たせることができる。
//  一方、インターフェースでは、親子関係にないクラス間に共通の動作を
//  持たせることができる。
//  すなわち、同じインターフェースを使うクラスは共通の親クラスをもつと
//  考えることができる。
//
// ●多重継承
//
//   Javaでは、多重継承(複数のクラスを親クラスとすること)は許されない。
//  インターフェース名は複数指定可能なので、インターフェースは多重継承の
//  一部を補完していると考えられる。
//
///////////////////////////////////////////////////////////////////////////////