[???] /
[Java FAQ] / [S009]
S009: 修飾子 - modifier
[S009 Q-01]
アクセス修飾子 public, protected, private, 「無指定」の違いは?
[S009 A-01]
違いは次のようになっています。
public
どのクラスからも参照可能。
protected
クラス自身、そのサブクラス、および同じパッケージに含まれる全てのクラ
スから参照可能。
無指定
クラス自身、および同じパッケージに含まれる全てのクラスから参照可能。
private
クラス自身からのみ参照可能。
参考記事 [JavaHouse-Brewers:1242]
[S009 Q-02]
class を final にする意義はあるのでしょうか?
[S009 A-02]
次のように考えられます。
フレームワーク
比較的大きなプロジェクトでは、 final を、設計標準や、プログラミング
標準の一部 として使うことができると考えられます。つまり、継承を許さ
ず使うことのみを許すことで、怪しげなよくわからないクラスを大量に作ら
れてしまうことを防止する役割をはたします。
高速化
コンパイル時にどのメソッドを呼び出すか確定しているため、 コンパイラ
によってはメソッドをインライン展開する可能性があります。そのため実行
速度が上がる可能性があります。
変更不能
変更不能オブジェクトを作成するときに使われます。例えば
java.lang.String が final で無かった場合メソッド(例えば
java.lang.String#equals(Object))をオーバーライドすることによって、
変更不能であるはずの java.lang.String が、変更不能でないような振る舞
いを持たせることが可能になります。
参考記事 [JavaHouse-Brewers:88]
contributor: AMADA Takashi
コメントの送り先:Java FAQ BBS