#navi(Programming_II/11)

*moodle [#z8d7d992]
-https://tarkus.eva.ie.u-ryukyu.ac.jp/moo/


*インターフェース [#wcc210d3]
第14章~
*ロボコード大会 [#z904bde9]
-[[Programming_II/11/Robocode]]

**インターフェースとは, [#u85a93f2]
-フィールドは,必ず定数
-メソッドは,必ず抽象メソッド
-インスタンスを作れない

**インタフェースの宣言 [#u0811980]
 interface Lockable {
    boolean lock();
    boolean unlock();
 }
**インターフェースの実装 [#bdc60c72]
 class Kinko implements Lockable {
    public boolean lock(){
       ...
    }
    public boolean unlock(){
       ...
    }
 }

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

*インターフェースのフィールドとメソッド [#od3cbe57]
-インターフェースのフィールドは,public static final
-インターフェースのメソッドは,public abstract
*インターフェースの宣言 [#r3b2098e]
 interface インターフェース名 extends スーパーインターフェース名 {
      型名  フィールド名 = 定数;
      型名  フィールド名 = 定数;
      型名  フィールド名 = 定数;
      型名  メソッド名(引数列);
      型名  メソッド名(引数列);
      型名  メソッド名(引数列);
 }
*単一継承と多重継承 [#f5149288]
-実装は単一継承である.(extends)
-名前は,多重継承である.(implements)
*クラスとインターフェースの比較 [#r97c0988]
||クラス|インターフェース|h
|インスタンス|作れる|作れない|
|メソッド|いろいろ|必ずpublic abstract|
|フィールド|いろいろ|必ずpublic static final|
|スーパークラス|1つだけ|持てない|
|スーパーインターフェース|複数指定可能| 複数指定可能 |

*ガベージコレクション [#s5c8a316]
第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クラスのインスタンスを参照できなくなる.このとき,ガベージ(ゴミ)となる.
**ガベージコレクタ [#j03f986e]
-ヒープ上に確保されたインスタンスのメモリ領域がガベージとなり,ガベージが蓄積されると,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());
         }
     }
 }

**メモリ管理のためのメソッド [#k14d437f]
-利用可能なメモリの大きさを得る
 long free = Runtime.getRuntime().freeMemory();
-全てのメモリの大きさを得る
 long total = Runtime.getRuntime().totalMemory();
-最大メモリの大きさを得る
 long max = Runtime.getRuntime().maxMemory();
-ガベージコレクションを動作させる
 Runtime.getRuntime().gc();
または,
 System.gc();



//*練習課題 
//-[[moodle>https://tarkus.eva.ie.u-ryukyu.ac.jp/moo/]]

#navi(Programming_II/11)

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS