http://java-code.jp/128 には、3つのことが書いてあったと思います。
- メソッドであればサブクラスでのオーバーライドを禁止します
- フィールドであれば値の再代入を禁止します
- クラスであればextends句による継承を禁止します
そもそもクラスを作るという時、始めのうちはmainメソッドを含んだクラスだけを作ると思いますが、コード量が多くなると、クラス分けというものがしたくなります。すると、mainメソッドを含まないクラスを作ることになります。それは、mainメソッド(エントリーポイント)を含むクラスから見ると、ライブラリのような外見をしています。つまり、JavaのAPIにおけるStringクラスやArrayクラスといったようなものです。
ですから、自作クラスを作るときは、是非JavaのAPIクラスについてある程度勉強して、使ってみることが重要です。JavaのAPIのクラスのなかにもfinalが付いているメソッドやクラスが散見されるかと思いますが、それは、何らかの理由があってfinalが付いていたり、ついていなかったりします。それには一定のルールがあるのですが、以下の書籍が参考になると思います。
EFFECTIVE JAVA 第2版 (The Java Series)
JavaのAPIにおいても、100%の仕事というのはなくて、あのAPIは素晴らしい、あのAPIはダメだな、というのがインターネットの掲示板でも議論されていると思います。Joel on Softwareのなかでは、一見ダメなAPI仕様だと思われているものでも、何かしらの理由があってそうなっていることもあると忠告しています。なので、finalをつけるかどうかについては、メソッドとクラスの場合は非常に選択が難しいということです。
ただし、誰かと共同で作業をするというのでなければ、基本的にfinalメソッドは不要です。また、フィールドは基本的に他のクラスに公開するものではないので、「基本的には」finalフィールドは定数という考え方でよろしいかと思います。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。