////////////////////////////////////////////////////////////////////////////////
//  << j252a.java >>
//
//  クラス(5):インターフェース(基本的使い方)
//
//  基本的な使い方を確認する。
//
// ●インターフェース内の変数
//
//  インターフェース内の変数は、どこからでも参照できるが値の変更はできない。
//  したがって、自動的にpublic指定、static指定、final指定がつけられる。
//  ・public指定 どこからでも参照できる。
//  ・static指定 クラス変数扱い。
//  ・final指定  変更できない。
//
// ●インターフェース内のメソッド
//
//  インターフェース内のメソッドには、自動的にpublic指定、abstract指定が
//  つけられる。
//  ・abstract指定 実装されていないメソッドを意味する。
//
//    したがって、使う側のクラスでもpublic指定が必要となる。
//  また、戻り値、引数のデータ型と個数なども一致させる必要がある。
//
//  (1)インターフェース(intf)の定義。
//  (2)インターフェース(intf)の実装。
//  (3)インターフェース内定数intf.msgの参照。
//     オブジェクトが無くても参照可能。
//  (4)オブジェクトobjの作成。
//  (5)インターフェース内定数obj.msgの参照。
//  (6)インターフェース内メソッドの呼び出し。
//
///////////////////////////////////////////////////////////////////////////////

interface intf { //(1)
  String msg = "interface内定数";
  void mi(); 
}

class C implements intf { 
  public void mi() { //(2)
    System.out.println("クラス(C)で実装されたインターフェイス内メソッド(mi)");
  }
}

class j252a {
  public static void main(String args[]) {

    System.out.println("(3)intf.msg:" + intf.msg); //(3)

    C obj = new C(); //(4)

    System.out.println("(5)obj.msg:" + obj.msg); //(5)

    System.out.print("(6)obj.mi():"); obj.mi(); //(6)

  }

}
実行結果
% javac j252a.java
% java j252a
(3)intf.msg:interface内定数
(5)obj.msg:interface内定数
(6)obj.mi():クラス(C)で実装されたインターフェイス内メソッド(mi)