インスタンス変数のアクセスコントロール修飾子は、プログラムの中でその変数へのアクセスの可否を制御する。インスタンス変数で利用可能なアクセスコントロール修飾子は、public, internal, protected, privateの4つである。
publicとinternalはクラス定義の際と同様の効果がある。publicはパッケージの中からでも外からでもアクセス可能。internalは、そのインスタンス変数を定義したのと同一パッケージ内からのみアクセス可能。アクセスコントロール修飾子をつけずにインスタンス変数を定義した場合、その変数はinternalとなる。
protected修飾子をつけて宣言されたインスタンス変数は、その変数を定義したクラスと、そのクラスの子孫にあたるクラスからのみアクセス可能。
private修飾子をつけて宣言されたインスタンス変数は、その変数を定義したクラスの内部でのみアクセス可能。
privateで変数を定義することで、それぞれのインスタンスの情報を安全に格納し、コードの依存関係を弱めたり、おかしな値を代入してしまう事故を防ぐことができる。
一般に、全てのインスタンス変数にアクセスコントロール修飾子をはっきりと指定しておくことは、良いやり方である。
必要もないのにpublicでインスタンス変数を定義すべきではない。どのアクセスコントロール修飾子をつければよいのか迷ったら、最も制限の厳しいprivateを使うのがいい。後から制限を緩めるのは簡単だからである。
一方、仮にインスタンス変数をpublicで作っていたとして、その変数に外部のコードが依存していたら、その変数をprivateに書き換えるのは骨が折れる。
今日の進捗:210→220/4343