// Shapeクラス
public class Shape {
// final修飾子を持つcalculateAreaメソッド
public final double calculateArea() {
// 各形状に固有の面積計算
return 0.0; // 仮の戻り値、実際には形状ごとに計算が必要
}
}
// Circleクラス(Shapeクラスを継承したサブクラス)
public class Circle extends Shape {
// 以下のコードでエラーが発生します
// サブクラスでcalculateAreaメソッドをオーバーライドしようとしているため
// エラー: calculateArea() in Circle cannot override calculateArea() in Shape
// overridden method is final
@Override
public double calculateArea() {
// 新しい計算方法を追加しようとしても、final修飾子があるためエラーが発生
return 0.0;
}
}
この例では、Shape
クラスにfinal
修飾子を持つcalculateArea
メソッドを作成し、それを継承したCircle
クラスでオーバーライドしようとしています。しかし、calculateArea
メソッドがfinal
修飾子を持つため、サブクラスでのオーバーライドが禁止され、コンパイルエラーが発生します。