Javaのメソッドには様々な修飾子が使えます。
その中でも、変数にfinal修飾子を使うと値の変更ができなくなるため、定数宣言をする際によく使います。
このfinal修飾子、メソッドにも使え、Overrideをできなくすることができます。
これをつけると、子クラスでのポリモーフィズムが使えなくなりますが、他方で、動作の保証をすることができます。
そこで、拡張可能なクラスは、以下のように運用することが望ましい、と言われます。
- 動作が変更された場合の影響範囲を考えても問題ない場合にはfinal修飾子をつけない
- そうでない場合にはfinal修飾子を付ける
実際の開発ではここまで厳密な切り分けはできないかもしれませんが、注意することは有用です。