// Shape クラスの定義
class Shape {
// area メソッド
public double area() {
System.out.println("Calculating area of a generic shape");
return 0.0; // デフォルトの値(ダミー)
}
}
// Circle クラスの定義(Shape クラスを継承)
class Circle extends Shape {
// area メソッドをオーバーライド
@Override
public double area() {
System.out.println("Calculating area of a circle");
// 円の面積を計算(具体的な計算式を追加)
double radius = 5.0; // 仮の半径
return Math.PI * Math.pow(radius, 2);
}
}
// Rectangle クラスの定義(Shape クラスを継承)
class Rectangle extends Shape {
// area メソッドをオーバーライド
@Override
public double area() {
System.out.println("Calculating area of a rectangle");
// 長方形の面積を計算(具体的な計算式を追加)
double length = 4.0; // 仮の長さ
double width = 6.0; // 仮の幅
return length * width;
}
}
// メインクラス
public class Main {
public static void main(String[] args) {
// Shape クラスのオブジェクトを作成
Shape shape = new Shape();
// Shape クラスの area メソッドを呼び出す
double genericArea = shape.area();
System.out.println("Area of generic shape: " + genericArea);
// Circle クラスのオブジェクトを作成
Circle circle = new Circle();
// Circle クラスの area メソッドを呼び出す(オーバーライドされたバージョンが呼ばれる)
double circleArea = circle.area();
System.out.println("Area of circle: " + circleArea);
// Rectangle クラスのオブジェクトを作成
Rectangle rectangle = new Rectangle();
// Rectangle クラスの area メソッドを呼び出す(オーバーライドされたバージョンが呼ばれる)
double rectangleArea = rectangle.area();
System.out.println("Area of rectangle: " + rectangleArea);
}
}
このコードでは、Shape
クラスにはデフォルトの area
メソッドがあり、Circle
クラスと Rectangle
クラスがそれぞれこのメソッドをオーバーライドしています。メインクラスでは、Shape
クラス、Circle
クラス、および Rectangle
クラスのオブジェクトを作成し、それぞれの area
メソッドを呼び出しています。