🎯

【Java】クラス解説15・インスタンスメソッドの継承

2024/01/14に公開

インスタンスメソッドの継承のコード例

public class Main {
    public static void main(String[] args) {
        // サブクラスのインスタンスを生成
        SubClass sb = new SubClass();
        // サブクラスのインスタンスからスーパークラスのインスタンスメソッドを呼び出す
        sb.printName("fuzi"); // 出力結果 -> fuzi
    }
}
// ス―パークラスを定義
class MyClass {
    // インスタンスメソッドを定義
    public void printName(String name) {
        System.out.println(name);
    }
}

// サブクラスを定義
class SubClass extends MyClass {
    
}

インスタンスメソッドの継承のコード例の解説

class MyClass {
    public void printName(String name) {
        System.out.println(name);
    }
}

スーパークラスのMyClassを定義して、

  1. publicな戻り値のない(void)インスタントメソッドprintNameを定義して、
  2. 仮引数nameに渡された文字列を標準出力に出力します。

class SubClass extends MyClass {
    
}

MyClassを継承したSubClassを定義します。


SubClass sb = new SubClass();
sb.printName("fuzi");

Mainクラスで、

  1. サブクラスのインスタンスsbを生成します。
  2. サブクラスのインスタンスsbからスーパークラスのインスタンスメソッドprintNameにアクセスし、実引数fuziを渡します。

【参考】サブクラスのインスタンスメソッドからスーパークラスのインスタンス変数にアクセスするコード例

1つ前の記事でインスタンス変数の継承を学習しました。そこでは、サブクラスのインスタンスからスーパークラスのインスタンス変数にアクセスしました。
ここでは、サブクラスのインスタントメソッドからスーパークラスのインスタンス変数にアクセスするコードを紹介したいと思います。

public class Main {
    public static void main(String[] args) {
        // サブクラスのインスタンスを生成
        SubClass sb = new SubClass();
        // サブクラスのインスタンスからスーパークラスのインスタンス変数に値を代入
        sb.name = "fuzi";
        // サブクラスのインスタンスからサブクラスのインスタンスメソッドにアクセス
        sb.printName(); // 出力結果 -> fuzi
    }
}
// ス―パークラスを定義
class MyClass {
    // インスタンス変数を定義
    public String name;
}

// サブクラスを定義
class SubClass extends MyClass {
    // インスタンスメソッドを定義
    public void printName() {
        // サブクラスのインスタントメソッドからスーパークラスのインスタンス変数にアクセス
        System.out.println(name);
    }
}

サブクラスのインスタンスメソッドからスーパークラスのインスタンス変数にアクセスするコード例の解説

SubClass sb = new SubClass();
sb.name = "fuzi";
sb.printName(); // 出力結果 -> fuzi

Mainクラスで、

  1. サブクラスのインスタンスを生成します。
  2. サブクラスのインスタンスからスーパークラスのインスタンス変数にアクセス(=インスタンス変数の継承)し、インスタンス変数にfujiという値を代入します。
  3. サブクラスのインスタンスからサブクラスのインスタンスメソッドprintNameにアクセスし、printNameメソッド呼び出します。

class MyClass {
    public String name;
}

スーパークラスのMyClassを定義して、

  1. publicなインスタンス変数nameを定義します。

class SubClass extends MyClass {
    public void printName() {
        System.out.println(name);
    }
}

MyClassを継承したSubClassを定義して、

  1. publicな戻り値のない(void)インスタントメソッドprintNameを定義します。
  2. ここで、サブクラスのインスタントメソッド内からスーパークラスのインスタンス変数nameにアクセスし、fujiが代入されたインスタンス変数nameを標準出力に出力します。

Discussion