親クラスを扱う「superキーワード」とは?
Javaのオブジェクト指向では、クラスの継承によって、親クラスのメンバーを子クラスで利用することができます。
このとき使うのが super
キーワードです。
親クラスのメソッドやコンストラクタ、フィールドにアクセスしたいときに使います。
主な用途
- 親クラスのメソッドを呼び出す
- 親クラスのコンストラクタを呼び出す
- 親クラスのフィールドにアクセスする
1. 親クラスのメソッドを呼び出す
class Animal {
public void speak() {
System.out.println("何かの動物が鳴いています。");
}
}
class Dog extends Animal {
@Override
public void speak() {
super.speak(); // 親クラスのメソッドを呼び出し
System.out.println("ワンワン!");
}
}
2. 親クラスのコンストラクタを呼び出す
class Animal {
public Animal(String name) {
System.out.println(name + "が生まれました。");
}
}
class Dog extends Animal {
public Dog() {
super("犬"); // 親のコンストラクタを呼び出す(最初の行に書く)
}
}
注意:super()
はコンストラクタ内の最初の行に書く必要があります。
3. 親クラスのフィールドにアクセス
class Animal {
protected String type = "動物";
}
class Cat extends Animal {
public void printType() {
System.out.println("私は" + super.type + "です。");
}
}
thisとの違い
キーワード |
意味 |
用途 |
this |
自分自身のオブジェクト |
自分のメソッド・フィールド・コンストラクタ |
super |
親クラスのオブジェクト |
親のメソッド・フィールド・コンストラクタ |
まとめ
superキーワードは、Javaで親クラスの要素にアクセスするためのキーワードです。
継承関係のあるクラス設計では、super
を活用して親クラスの機能を生かしつつ、子クラスでの拡張が行えます。
this
との違いを理解して、オブジェクト指向の力をより引き出していきましょう!