Javaとオブジェクト指向 super(4-18)

記事上広告

superキーワードの説明ページです。

superはフィールドやメソッドに付加することができる、スーパークラスのインスタンス(オブジェクト)を指し示すキーワードです。

superの概要

superは前述の通り、スーパークラスのインスタンス(オブジェクト)を指し示すものです。継承されたクラスのメソッドやフィールドはsuperが省略された形になっています。

また、this同様superもコンストラクタ内で利用することができます。

様々なsuperの記述と利用法

superをフィールドと利用する

スーパークラスとサブクラスでは同じフィールド名を定義することができ、サブクラス内でスーパークラスのフィールドを利用する場合はsuperを付加することで利用できます。
※基本的にフィールドはprivate宣言されており、スーパークラスのフィールドを直接利用できません。その為、フィールドにsuperを付けることはあまりありません。

フィールドにsuperを追加 super.フィールド名
記述例 super.name = name ;

superをメソッドに付加する

メソッドにsuperを付加すると、オーバーライドされる前(スーパークラス)のメソッドを呼び出すことができます。(オーバーライドの項でも説明しています

メソッドにthisを追加 super.メソッド名(引数)
記述例 super.execute() ;

superをコンストラクタ内で利用する

コンストラクタ内からスーパークラスのコンストラクタを呼び出す際に利用できます。但し、スーパークラスのコンストラクタを呼び出す場合は、必ず先頭に記述する必要があります。

コンストラクタをsuperで呼び出し super(引数)
記述例 Test(String s, int n){
空白super(s, n);
空白System.out.println(“初期化しました”) ;
}

super サンプルプログラム

以下のプログラムを「SuperTest.java」「Number42.java」という名前でWorkフォルダ内に保存します。

保存が完了したら、コマンドプロンプトを起動し、Number42.javaをコンパイルしてみましょう。

実行例

C:\work>javac Number42.java

C:\work>java Number42
スーパークラスのコンストラクタ
乗算を利用して等比数列を表示
3
6
12
24
48
96
192
384
768
1536
3072

※実行例はコンパイルおよび実行時の例を表示しています。

super 復習問題

superの説明として正しいものを選んでください。
解答群
superを付加するとアクセス禁止となる
superを付加するとスーパークラスを指し示す
superを付加しない場合はsuperが自動的に付加される
superは自分自身のオブジェクトを指し示す
フィールド名を「spuer.フィールド名」とした変更した場合の説明として正しいものを選んでください。
解答群
superを付加するとアクセス禁止となる
superを付加するとローカル変数の扱いとなる
superを付加すると自クラスのフィールドとして扱う
superを付加するとスーパークラスのフィールドとして扱う
super()という記述の説明として正しいものを選んでください。
解答群
super()はスーパークラスのメソッドを指し示し、メソッド内部で記述できる
super()はスーパークラスのコンストラクタを指し示し、コンストラクタ内部で記述できる
super()は引数ありのコンストラクタを呼び出す
super()はコンストラクタを指し示し、コンストラクタ内部であれば記述場所は問わない
お疲れ様でした。

まとめ

  • superはスーパークラスのインスタンス(オブジェクト)を指し示す
  • フィールドやメソッドに付加でき、コンストラクタはsuper()として利用できる
  • スーパークラスのメソッドを呼び出すことにより、オーバーライド前のメソッドを利用できる
  • スーパークラスのコンストラクタを呼び出す際には「super(引数)」として利用できる
  • 「super(引数)」はコンストラクタ内部の先頭にしか記述できない
スポンサーリンク
レクタングル