moodle

インターフェース

第14章

インターフェースとは,

  • フィールドは,必ず定数
  • メソッドは,必ず抽象メソッド
  • インスタンスを作れない

インタフェースの宣言

interface Lockable {
   boolean lock();
   boolean unlock();
}

インターフェースの実装

class Kinko implements Lockable {
   public boolean lock(){
      ...
   }
   public boolean unlock(){
      ...
   }
}
class LockableJewelBox extends JwelBox implements Lockable {
   public boolean lock(){
      ...
   }
   public boolean unlock(){
      ...
   }
      ...
}

インターフェースのフィールドとメソッド

  • インターフェースのフィールドは,public static final
  • インターフェースのメソッドは,public abstract

インターフェースの宣言

interface インターフェース名 extends スーパーインターフェース名 {
     型名  フィールド名 = 定数;
     型名  フィールド名 = 定数;
     型名  フィールド名 = 定数;
     型名  メソッド名(引数列);
     型名  メソッド名(引数列);
     型名  メソッド名(引数列);
}

単一継承と多重継承

  • 実装は単一継承である.(extends)
  • 名前は,多重継承である.(implements)

クラスとインターフェースの比較

クラスインターフェース
インスタンス作れる作れない
メソッドいろいろ必ずpublic abstract
フィールドいろいろ必ずpublic static final
スーパークラス1つだけ持てない
スーパーインターフェース複数指定可能複数指定可能

ガベージコレクション

第15章

Something obj = new Something();
  • 変数objは,Somethingクラスのインスタンスの参照したアドレスを保持している.
    Something obj1 = new Something();
    Something obj2 = obj1;
    obj1 = null;
  • obj1にnullを代入することで,どのアドレスも参照しない状態にする.このとき,obj2にSomethingクラスのインスタンスの参照を保持
    Something obj1 = new Something();
    Something obj2 = obj1;
    obj1 = null;
    obj2 = null;
  • obj2の参照もnullにすると,作ったSomethingクラスのインスタンスを参照できなくなる.このとき,ガベージ(ゴミ)となる.

ガベージコレクタ

  • ヒープ上に確保されたインスタンスのメモリ領域がガベージとなり,ガベージが蓄積されると,Java仮想マシンは,ガベージコレクションを始める.
  • どの変数からも参照されないインスタンスのメモリ領域を回収し,再利用する.

GcTest1.java:

public class GcTest1 {
    public static void main(String[] args) {
        while (true) {
            String s = new String("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
            System.out.println("残りメモリ = " + Runtime.getRuntime().freeMemory());
        }
    }
}

メモリ管理のためのメソッド

  • 利用可能なメモリの大きさを得る
    long free = Runtime.getRuntime().freeMemory();
  • 全てのメモリの大きさを得る
    long total = Runtime.getRuntime().totalMemory();
  • 最大メモリの大きさを得る
    long max = Runtime.getRuntime().maxMemory();
  • ガベージコレクションを動作させる
    Runtime.getRuntime().gc();
    または,
    System.gc();


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2013-06-20 (木) 14:45:23 (2286d)