2012-02-13 8 views
2

私は、一貫した基準を持たない、さまざまな人々によって書かれた一連のクラスをリファクタリングしています。この過程で、私はこれらの宣言の間に差があるかどうか熟考するようになりました:クラスレベルフィールド宣言のプライベートキーワードは実際に何かをしますか?

public class foo(){ 

    int fooBar = 1; 

    ...... 

public class foo(){ 

    private int fooBar = 1; 

    ...... 

これは意味論の問題であることに注意してください、私は十分に承知していますスコープ、カプセル化などです。質問は、クラスフィールドのプライベートスコープアノテーションを使用して何かをしますか?すべての思考のための

おかげ..

(PS。理解の私の現在のレベルは差がないと言う)

+1

デフォルトスコープがプライベートスコープよりも多くのアクセスを許可する場合は、実際にセマンティクスではありません。 – AHungerArtist

+3

違いはありません。どちらも余分なかっこで構文エラーがあります。 – Sean

+0

http://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html – Maxim

答えて

13

は絶対に違いがあります。 default access level for a class member in Java is package-private、プライベートではありません。つまり、最初のバージョンでは、Fooと同じパッケージ内のどのクラスでもfooBarにアクセスできますが、2番目のバージョンではそうではありません。

+0

うーん、恥ずかしいフラッシュが起こっているように感じる。私はそれをグーグルでしっかりと過ごし、答えを見つけられませんでした。ありがとう。 – Simon

関連する問題