2012年12月04日

≪Java≫ 例外クラスのメソッド 代表例

≪Java≫ 例外クラスのメソッド 代表例



■ public void printStackTrace();


  → 例外の名前、メソッド呼び出し時の引数、例外の発生場所、例外を発生させたメソッドの情報
 【出力例】
   java.lang.Exception: 引数が0
   at test.Exec.disp(Exec.java:21)
   at test.Exec.main(Exec.java:11)

 【呼び出し例】
   }catch(Exception e){
    e.printStackTrace();
   }


■ public String toString();


  → 例外の名前、メソッド呼び出し時の引数の情報
 【出力例】
   java.lang.Exception: 引数が0

 【呼び出し例】
   }catch(Exception e){
    System.err.println(e.toString + "\n");   
   }

  <参考>
   実は、以下の呼び出し方でも、まったく同じ結果になる。(toStringを書かない)
   }catch(Exception e){
    System.err.println(e + "\n");   
   }


■ public String getMessage();


  → メソッド呼び出し時の引数のみを表示
 【出力例】
   引数が0

 【呼び出し例】
   }catch(Exception e){
    System.err.println(e.getMessage + "\n");   
   }

  <参考>
   例外メソッドの呼び出し自体の記述例は以下の通り
    public static void disp(int n) throws Exception{
     if(n==0) throw new Exception("引数が0");
      ---例外でなかった時の処理---
    }




2012年12月01日

≪Java≫ インターフェースの注意点

≪Java≫ インターフェースの注意点


■ インターフェースの宣言


インターフェースの宣言には、「 abstract(抽象)」が暗黙的に付加している。
以下はどちらでも問題なし。
 ・interface インターフェース名 {}
 ・abstract interface インターフェース名 {}


■ インターフェースのメソッド宣言


インターフェースのメソッド宣言には、「 public abstract 」が暗黙的に付加している。
以下はどれでも問題なし。
 ・void メソッド名();
 ・public void メソッド名();
 ・abstract void メソッド名();
 ・public abstract void メソッド名();
 ・abstract public void メソッド名();

「 public abstract 」が付いているため、
以下はコンパイルエラーとなる。
 ・static void メソッド名(); ⇒ static は abstract と一緒には付与できない
 ・final void メソッド名(); ⇒ final が付くと実装時にしなければならない「オーバーライド」できない
 ・private void メソッド名(); ⇒ アクセス修飾子は public である
 ・protected void メソッド名(); ⇒ アクセス修飾子は public である


■ インターフェースの定数宣言


インターフェースの定数宣言には、「 public static final 」が暗黙的に付加している。
以下はどれでも問題なし。
 ・static int 変数名;
 ・final int 変数名;
 ・public final int 変数名;
 ・static final int 変数名;


■ インターフェースの実装時の注意点


 @ 1つのクラスに複数のインターフェースを実装できる。
   ⇒ 継承と違って、複数のインターフェースを実装できる。
     (言い換えると、全てのインターフェースを全て実装(オーバーライド)しなければならない。
 A 一部のインターフェース(メソッド)を実装する場合は、abstract クラスにする。




≪Java≫ final について

≪Java≫ final について


・ 「変更できない」という意味の修飾子。
・ クラス、メソッド、変数の宣言時に使用する。

■ クラスで使用 ⇒ 継承できない
 (例)
   final class Hoge(){}

■ メソッドで使用 ⇒ サブクラスでオーバーライドできない
 (例)
   final int hoge(){}

■ 変数で使用 ⇒ 初期化の時に代入した値を後で変更できない
 (例)
   final int HOGE = 10;
   ※ final を使った時の変数は、大文字で書くのが慣例。