014 継承(暗黙的なスーパークラスのコンストラクタ呼び出し) 012 解答例

// 形状クラス
class Shape {
    // 形状の色を表すインスタンス変数
    private String color;

    // 形状の色を初期化するコンストラクタ
    public Shape(String color) {
        this.color = color;
    }

    // 形状の色を取得するメソッド
    public String getColor() {
        return color;
    }
}

// 円クラス
class Circle extends Shape {
    // 円の半径を表すインスタンス変数
    private double radius;

    // 円の半径を初期化するコンストラクタ
    public Circle(String color, double radius) {
        // 親クラスのコンストラクタを呼び出し
        super(color);
        // 円の半径を初期化
        this.radius = radius;
    }

    // 円の半径を取得するメソッド
    public double getRadius() {
        return radius;
    }
}

// メインクラス
public class Main {
    public static void main(String[] args) {
        // Circle クラスのインスタンスを生成
        Circle myCircle = new Circle("Red", 5.0);

        // 形状の色を取得して表示
        System.out.println("Shape Color: " + myCircle.getColor());

        // 円の半径を取得して表示
        System.out.println("Circle Radius: " + myCircle.getRadius());
    }
}

この例では、Shape クラスが親クラスとして、Circle クラスがその子クラスとして定義されています。Circle クラスのコンストラクタで super(color) を使用して、親クラスのコンストラクタを呼び出しています。これにより、Shape クラスのコンストラクタが暗黙的に呼び出され、形状の色が初期化されます。

「014 継承」問題集リスト