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

class Shape {
    private String color;

    // 親クラスのコンストラクタ
    public Shape(String color) {
        this.color = color;
    }

    public String getColor() {
        return color;
    }
}

class Rectangle extends Shape {
    private int width;
    private int height;

    // 子クラスのコンストラクタ
    public Rectangle(String color, int width, int height) {
        // 親クラスのコンストラクタを明示的に呼び出す
        super(color);

        // 子クラスのインスタンス変数を初期化
        this.width = width;
        this.height = height;
    }

    // 矩形の面積を計算するメソッド
    public int calculateArea() {
        return width * height;
    }
}

public class Main {
    public static void main(String[] args) {
        // Rectangle クラスのインスタンスを生成
        Rectangle rectangle = new Rectangle("Blue", 5, 10);

        // 親クラスのメソッドを使用して色を取得
        System.out.println("Shape color: " + rectangle.getColor());

        // 子クラスのメソッドを使用して面積を取得
        System.out.println("Rectangle area: " + rectangle.calculateArea());
    }
}

この例では、Rectangle クラスのコンストラクタ内で super(color) を使用して、Shape クラスのコンストラクタを呼び出しています。

「014 継承」問題集リスト