Javaの道 Javaに関する
 ニュースJava基本Servlet・JSPオープンソースFAQ掲示板
Javaの道 > Java基本 > クラス −11.superの利用
更新日:2005/7/25
クラス−11.superの利用
このページでは、superの利用方法について説明します。
概要

superはサブクラスのインスタンスメソッド内、コンストラクタ内においてスーパークラスのメンバ変数、メソッド、コンストラクタを参照する際に使用します。サブクラスのクラスメソッド内でsuperを利用することはできません。なぜなら、superは現在実行しているオブジェクトのスーパークラスのオブジェクトを表すため、オブジェクトに依存しないクラスメソッドはsuperを持ちません。
関連ページ:static

使用方法

superは以下のケースにおいてよく使用されます。

1.オーバーライドを行ったサブクラスにおいて、スーパークラスのインスタンスメソッドを参照したい場合に使用します。

super.メソッド(引数値,・・・);

2.隠蔽を行ったサブクラスにおいて、スーパークラスのインスタンスメンバ変数を参照したい場合に使用します。

super.メンバ変数;

3.サブクラスのコンストラクタからスーパークラスのコンストラクタを参照したい場合に使用します。この例の詳細についてはコンストラクタを参照してください。

super(引数値,・・・);

【例1オーバーライドを行ったサブクラスにおいて、スーパークラスのインスタンスメソッドを参照した例です。

//スーパークラスExClass14
class ExClass14 {
  //年率30%で計算するスーパークラスのメソッド
  void interCal(int m) {
    float interest = 1.3f;
    System.out.println(m * interest + "円");
  }
}

//サブクラスsubExClass14
class subExClass14 extends ExClass14 {
  //年率50%で計算するサブクラスのメソッド
  void interCal(int m) {
    float interest = 1.5f;
    System.out.println(m * interest + "円");
  }
  void showCompare (int x) {
    super.interCal(x);  //(2)
    interCal(x);  //(3)
  }
  public static void main(String[] args) {
    subExClass14 object1 = new subExClass14();
    object1.showCompare(1000000);  //(1)
  }
}

【解説1

(1). スーパークラスのメソッドの実行結果とサブクラスのメソッドの実行結果を比較するshowCompareメソッドを呼び出します。
(2). superを使用し、スーパークラスのinterCalメソッドを呼び出し、スーパークラスのメソッドでの利率計算結果を表示します。
(3). サブクラスのinterCalメソッドを呼び出し、サブクラスのメソッドでの利率計算結果を表示します。
【実行結果1】
D:\JAVA>javac subExClass14.java

D:\JAVA>java subExClass14
1300000.0円
1500000.0円

D:\JAVA>



このページのトップへ
 ニュースJava基本Servlet・JSPオープンソースFAQ掲示板
Javaの道_CopyrightJavaの道