🎯
【Java】クラス解説30・superの使い方1
superの使い方1
superの使い方は、主に下記の3つがあげられます。
- サブクラスからスーパークラスのコンストラクタの呼び出し。
- サブクラスからスーパークラスのメソッドの呼び出し。
- サブクラスからスーパークラスのインスタンス変数へのアクセス。
1. スーパークラスのコンストラクタの呼び出しのコード例
public class Main {
public static void main(String[] args) {
// サブクラスのコンストラクタ呼び出し
Fuzi f = new Fuzi();
}
}
class MyClass {
protected MyClass() {
System.out.println("スーパークラスのコンストラクタ");
}
}
class Fuzi extends MyClass {
public Fuzi() {
// サブクラスからスーパークラスのコンストラクタ呼び出し
super(); // 出力結果 -> スーパークラスのコンストラクタ
}
}
コード例解説
public class Main {
public static void main(String[] args) {
Fuzi f = new Fuzi();
}
}
Mainクラスで、
- Fuziクラスのインスタンスを生成し、Fuziクラスのコンストラクタを呼び出します。
class MyClass {
protected MyClass() {
System.out.println("スーパークラスのコンストラクタ");
}
}
スーパークラスのMyClassクラスで、
- コンストラクタを定義します。
- コンストラクタが呼び出されると、標準出力に
スーパークラスのコンストラクタ
と出力されるようにします。
class Fuzi extends MyClass {
public Fuzi() {
super(); // 出力結果 -> スーパークラスのコンストラクタ
}
}
スーパークラスを継承したFuziクラスで、
- コンストラクタを定義します。
-
super()
によりスーパークラスのコンストラクタを呼び出します。
その結果、標準出力にスーパークラスのコンストラクタ
が出力されます。
2. スーパークラスのメソッドの呼び出しのコード例
public class Main {
public static void main(String[] args) {
Fuzi f = new Fuzi();
// サブクラスのインスタンスからサブクラスのメソッドの呼び出し
f.fPrint();
}
}
class MyClass {
protected void print() {
System.out.println("スーパークラスのメソッド");
}
}
class Fuzi extends MyClass {
public void fPrint() {
// サブクラスからスーパークラスのメソッドの呼び出し
super.print(); // 出力結果 -> スーパークラスのメソッド
}
}
コード例解説
public class Main {
public static void main(String[] args) {
Fuzi f = new Fuzi();
f.fPrint();
}
}
Mainクラスで、
- Fuziクラスのインスタンスを生成します。
- FuziクラスのインスタンスからFuziクラスのfPrintメソッドを呼び出します。
class MyClass {
protected void print() {
System.out.println("スーパークラスのメソッド");
}
}
スーパークラスのMyClassクラスで、
- printメソッドを定義します。
- 処理内容を、標準出力に
スーパークラスのメソッド
と出力されるようにします。
class Fuzi extends MyClass {
public void fPrint() {
super.print(); // 出力結果 -> スーパークラスのメソッド
}
}
スーパークラスを継承したFuziクラスで、
- fPrintメソッドを定義します。
- 処理内容を、
super
を使ってスーパークラスのprintメソッドを呼び出します。
その結果、標準出力にスーパークラスのメソッド
が出力されます。
3. スーパークラスのインスタンス変数へのアクセスのコード例
public class Main {
public static void main(String[] args) {
Fuzi f = new Fuzi("fuzi");
f.print(); // 出力結果 -> スーパークラスのインスタンス変数 : fuzi
}
}
class MyClass {
// スーパークラスのインスタンス変数
protected String value;
// スーパークラスのコンストラクタ
protected MyClass(String value) {
this.value = value;
}
}
class Fuzi extends MyClass {
public Fuzi(String value) {
// スーパークラスのコンストラクタ呼び出し
super(value);
}
public void print() {
// スーパークラスのインスタンス変数にアクセス
System.out.println("スーパークラスのインスタンス変数 : " + super.value);
}
}
コード例解説
public class Main {
public static void main(String[] args) {
Fuzi f = new Fuzi("fuzi");
f.print(); // 出力結果 -> スーパークラスのインスタンス変数 : fuzi
}
}
Mainクラスで、
- Fuziクラスのインスタンスを生成し、実引数で
"fuzi"
を渡すFuziクラスのコンストラクタを呼び出します。 - FuziクラスのインスタンスからFuziクラスのprintメソッドを呼び出します。
class MyClass {
protected String value;
protected MyClass(String value) {
this.value = value;
}
}
スーパークラスのMyClassクラスで、
- インスタンス変数valueを定義します。
- 仮引数valueを受け取るコンストラクタを定義して、
- インスタンス変数valueに、仮引数の値が代入された変数valueを代入します。
class Fuzi extends MyClass {
public Fuzi(String value) {
super(value);
}
public void print() {
// スーパークラスのインスタンス変数にアクセス
System.out.println("スーパークラスのインスタンス変数 : " + super.value);
}
}
スーパークラスを継承したFuziクラスで、
- 仮引数valueが
"fuzi"
を受け取るコンストラクタを定義して、 -
super()
によりスーパークラスのコンストラクタを呼び出します。この時、実引数として"fuzi"
を渡します。 - printメソッドを定義して、
-
super.value
によりスーパークラスのインスタンス変数valueにアクセスし、標準出力に文字列スーパークラスのインスタンス変数 :
に加えスーパークラスのインスタンス変数の値fuzi
を出力します。
Discussion