グローバル変数のスコープ

前回実装した、テキスト読み込み→2次元配列に格納のプログラムで学んだこと。

フィールドでグローバル変数を宣言した後、コンストラクタでその変数の型(及びクラス)をもう一度宣言してはならない

コンストラクタでグローバル変数の型を再び宣言すると、その後のメソッドでグローバル変数を呼び出したとき、コンストラクタでの処理が反映されなくなる。

class Hoge{
//グローバル変数data[][] を宣言
Object[][] data ; //オブジェクトクラスの2次元配列

//コンストラクタ
Hoge(){
// Object[][] data = new Object[2][2]; これだとグローバル変数のdataと連動しない
data = new Object[2][2]; //グローバル変数として宣言した変数については、コンストラクタ内においてクラスの宣言はしない
}

//メソッド
public void showData(){
    for(int i =0;i<2;i++){
        for(int j=0;j<2;j++){
          System.out.println(data[i][j].toString());
          }   
     }
}

}