014 継承(オーバーライドされたメソッドの利用) 021 解答例

// Shapeクラスの定義
class Shape {
    // 面積を計算するメソッド
    public void calculateArea() {
        System.out.println("面積を計算します");
    }
}

// Circleクラスの定義(Shapeクラスを継承)
class Circle extends Shape {
    private double radius;  // 円の半径

    // コンストラクタ
    public Circle(double radius) {
        this.radius = radius;
    }

    // 面積を計算するメソッド(Shapeクラスのメソッドをオーバーライド)
    @Override
    public void calculateArea() {
        double area = Math.PI * radius * radius;
        System.out.println("円の面積: " + area);
    }
}

// Rectangleクラスの定義(Shapeクラスを継承)
class Rectangle extends Shape {
    private double width;   // 矩形の幅
    private double height;  // 矩形の高さ

    // コンストラクタ
    public Rectangle(double width, double height) {
        this.width = width;
        this.height = height;
    }

    // 面積を計算するメソッド(Shapeクラスのメソッドをオーバーライド)
    @Override
    public void calculateArea() {
        double area = width * height;
        System.out.println("矩形の面積: " + area);
    }
}

// メインクラス
public class Main {
    public static void main(String[] args) {
        // Circleクラスの利用
        Circle circle = new Circle(5.0);
        circle.calculateArea();  // 出力: 円の面積: 78.53981633974483

        // Rectangleクラスの利用
        Rectangle rectangle = new Rectangle(4.0, 6.0);
        rectangle.calculateArea();  // 出力: 矩形の面積: 24.0
    }
}

このコードでは、Shapeクラスが基本的なメソッドを提供し、CircleクラスとRectangleクラスがそれを継承して必要なメソッドをオーバーライドしています。それぞれのクラスのインスタンスを作成し、calculateArea メソッドを呼び出すことで、円と矩形の面積が計算されて表示されます。

「014 継承」問題集リスト