report5

サンプルプログラムについての考察。
class Display {                                 // スーパークラス
Display
    void Disp() {                               // メソッド
        System.out.println("Hello!");
    }
}

class Succeed extends Display {                 // スーパークラス
Displayを継承したサブクラス Succeed
    public static void main(String args[]) {    // メソッド
        Succeed obj = new Succeed();            // オブジェクト生成
        obj.Disp();                             // スーパークラスから
	継承したメソッドを利用
    }
}
分かりやすく説明。
一旦プログラムの一部分を完成させ、 後からでもメインメソッドを追加し、メソッド中でも呼び出すことができる。
これをオーバーライドという。

super

内側からスーパークラスのメソッドを呼び出すには、superをつかう。
例:

class Display {                                 // スーパークラス
Display
    void Disp() {                               // メソッド
        System.out.println("Hello!");
    }
}

class SuperSample extends Display {             // サブクラス
SuperSample
    void Disp() {                               // メソッドのオーバー
    ライド
        super.Disp();                           // スーパークラスの
	Disp 実行
        System.out.println("Hello! Java!!");
    }
    public static void main(String args[]) {    // メソッド
        SuperSample obj = new SuperSample();    // オブジェクト生成
        obj.Disp();                             // サブクラスの Disp
	実行
    }
}
ここで、わざと分かりにくく書かれた文を翻訳します。
スーパークラスと言うのは、メソッドの置き場所のようなものである。
スーパーだから別にサブクラスより優れていると言うわけではない。
スーパークラスは処理の実体が書かれているので重要である。
そのため”スーパー”の称号を与えられているのだろうと思われる。
サブクラスは実行の大まかな流れを記述し、 必要があれば処理を追加するだけが良い。

this

カレントクラスを参照:
例:

class Keisan {                                  // スーパークラス
Keisan
    int x = 100;
    void add(int x, int y) {                    // メソッド
        int w1 = x + y;
        int w2 = this.x + y;
        System.out.println("w1 = " + w1 + "  w2 = " + w2);
    }
}

class ThisSample1 extends Display {             // サブクラス
ThisSample1
    public static void main(String args[]) {    // メソッド
        ThisSample1 obj = new ThisSample1();    // オブジェクト生成
        obj.add(10, 20);                        // add 実行
    }
}

thisは特殊な変数(定数)と考えて良い。
プログラムの”記述(コード)”に変数を使用できるようなものである。
とても便利である。