// DatabaseConnectionクラス
public class DatabaseConnection {
// final修飾子を持つconnectメソッド
public final void connect() {
System.out.println("データベースへの接続を確立します");
}
}
// Subclassクラス(DatabaseConnectionクラスを継承したサブクラス)
public class Subclass extends DatabaseConnection {
// 以下のコードでエラーが発生します
// サブクラスでfinal修飾子を持つメソッドをオーバーライドしようとしているため
// エラー: connect() in Subclass cannot override connect() in DatabaseConnection
// overridden method is final
// @Override
// public void connect() {
// // 新しい接続手法を追加しようとしても、final修飾子があるためエラーが発生
// System.out.println("新しい接続手法");
// }
}
この例では、DatabaseConnection
クラスにfinal
修飾子を持つconnect
メソッドがあります。そして、そのクラスを継承したSubclass
クラスでconnect
メソッドをオーバーライドしようとしています。しかし、connect
メソッドがfinal
修飾子を持つため、サブクラスでのオーバーライドが制限され、エラーが発生します。