Javaクラスにメソッドがあり、そのクラスのサブクラスがそのメソッドをオーバーライドできないようにしたいとします。それはできますか?
次のように、メソッドをfinal
として宣言できます。
public final String getId() {
...
}
詳細については、 http://docs.Oracle.com/javase/tutorial/Java/IandI/final.html を参照してください。
メソッドを作成するだけですfinal。
メソッドがビルドされたAPIの一部ではなく、サブクラスによって直接呼び出されない場合は、単にメソッドをprivate
にすることをお勧めします。
クラス階層が単一のパッケージに含まれている場合は、メソッドをパッケージスコープに作成します(スコープのキーワードなし)。したがって、外部(他の独自のパッケージを含む)のみがアクセスできず、したがってオーバーライドできません。
メソッドが実際にはAPIの一部ではないが、外部でもサブクラスで表示する必要がある場合は、protected
およびfinal
にすることをお勧めします。
最後に、メソッドがAPIの一部である場合は、それをpublic
およびfinal
にします。