interface(implements)の基礎

C:\DATA\Java2\Dos>java ExGcmLcm
Gcm(24,32)=8
Lcm(30,18)=90
 -- Press any key to exit (Input "c" to continue) --

最大公約数と最小公倍数の計算を例にして interface(implements)の基礎を説明します。

前田稔の超初心者のプログラム入門

プログラムの作成

  1. メモ帳などでタイプして GcmLcm.java の名前で保存して下さい。
    //★ インタフェース GcmLcm の定義   前田 稔
    interface GcmLcm
    {   int     Gcm(int a, int b);  //メソッドのヘッダーを定義
        int     Lcm(int a, int b);  //メソッドのヘッダーを定義
    }
    
  2. GcmLcm.java をコンパイルして GcmLcm.class を作成して下さい。
    main() メソッドが定義されていないので、次のメッセージが表示されますが無視して下さい。
    Exception in thread "main" java.lang.NoSuchMethodError: main
  3. 次に ExGcmLcm.java を GcmLcm.class と同じフォルダーに置いて、コンパイル&実行して下さい。
    //★ インタフェース GcmLcm の実装   前田 稔
    public class ExGcmLcm implements GcmLcm
    {
        // Main
        public static void main(String[] args)
        {   ExGcmLcm object = new ExGcmLcm();
            System.out.println("Gcm(24,32)=" + object.Gcm(24,32));  // メソッド Gcm の実行
            System.out.println("Lcm(30,18)=" + object.Lcm(30,18));  // メソッド Lcm の実行
        }
    
        // メソッド Gcm の本体の定義
        public int Gcm(int a, int b)
        {   int w1,w2;
            w1= a;
            w2= b;
            while(w1!=w2)
            {   if (w1>w2)  w1 -= w2;
                else        w2 -= w1;
            }
            return w1;
        }
    
        // メソッド Lcm の本体の定義
        public int Lcm(int a, int b)
        {   return a*b/Gcm(a, b);
        }
    }
    
  4. ページ先頭のメッセージがコンソール画面に表示されたら完成です。

プログラムの説明

  1. interface は abstract と良く似ているので、合わせて参照して下さい。
    今回はファイルを分けて作成してみました。
    最大公約数と最小公倍数の計算は コンソールから数値を入力する を参照して下さい。
  2. interface GcmLcm ではクラス(メソッド)の形式だけが定義されています。
    このクラスは Gcm() と Lcm() の二個のメソッドを持っています。
    メソッドの実体(中身)は interface GcmLcm を実装した Class で定義します。
        interface GcmLcm
        {   int     Gcm(int a, int b);  //メソッドのヘッダーを定義
            int     Lcm(int a, int b);  //メソッドのヘッダーを定義
        }
        
  3. GcmLcm を実装した class ExGcmLcm の説明です。
    implements GcmLcm で GcmLcm Class を実装します。
    extends と違って複数個のクラスをカンマで区切って実装することが出来ます。
        public class ExGcmLcm implements GcmLcm
        {
        
  4. interface で形式が定義されているメソッドの実体を記述して下さい。
    例え使わなくても、形式が定義されている全てのメソッドの実体を記述しなければなりません。
    Gcm(), Lcm() は単なるメソッドの名前ですから、形式さえ合えば処理の内容は自由です。
        // メソッド Gcm の本体の定義
        public int Gcm(int a, int b)
        {   int w1,w2;
            w1= a;
            w2= b;
            while(w1!=w2)
            {   if (w1>w2)  w1 -= w2;
                else        w2 -= w1;
            }
            return w1;
        }
    
        // メソッド Lcm の本体の定義
        public int Lcm(int a, int b)
        {   return a*b/Gcm(a, b);
        }
        

超初心者のプログラム入門(Java2)