Google検索エンジン

トップページ » Java複数クラス入門 » 異なるクラスの変数に直接アクセスする方法


異なるクラスの変数に直接アクセスする方法

  • 異なるクラスの変数へのアクセス

    Javaプログラムでは、機能ごとに複数のクラスを作成しますが、異なるクラスの変数に直接アクセス(変数の値を受け渡し)ができます。 異なるクラスの変数に直接アクセスする場合は、異なるクラスのメソッドを呼び出す時と同じように、まずはインスタンス化(初期化)します。 インスタンス化したら、変数名をそのまま記述すると、変数に直接アクセスできます。

    サンプルソースコードには、アクセス修飾子を記述していません。 アクセス修飾子が指定されていない場合は、同じパッケージからのみアクセスできます。 パッケージを分けたりする場合は、アクセス修飾子も合わせてご確認ください。



    異なるクラスの変数に直接アクセスする

    では早速、異なるクラスの変数に直接アクセスして、呼び出し元クラスで結果を表示してみましょう。 以下のサンプルソースコードをコンパイルして、実行してみてください。

    サンプルソースコード
    class sampleA {
       public static void main(String args[]) {
          sampleB aaa = new sampleB();
          System.out.println(aaa.test);
          System.out.println(new sampleB().test);
       }
    }
    
    class sampleB {
       String test = "変数test";
       void method(){
          System.out.println("method");
       }
    }
    

    実行結果として、「変数test」が2行、出力されます。 sampleBクラスで宣言した変数「String test」に、sampleAクラスから直接アクセスできている(値を受け渡している)ことが分かります。



    インスタンス化している間、変数の値は保持される

    次は、異なるクラスの変数の値が、保持されているのかを確認します。 以下のプログラムを入力して、実行してみてください。

    サンプルソースコード
    class sampleA {
       public static void main(String args[]) {
          sampleB aaa = new sampleB();
          System.out.println(aaa.test);
          aaa.method();
          System.out.println(aaa.test);
          aaa.method();
          System.out.println(aaa.test);
       }
    }
    
    class sampleB {
       int test = 1;
       void method(){
          test++;
       }
    }
    

    プログラムを実行すると、順番に「1、2、3」が出力されます。 これは、sampleBクラスの「void method」内で「test++」により、1加算された値が保持されていることを意味します。

    なお、サンプルプログラムは、分かりやすくする為、アクセス修飾子を記述していません。 実際に開発する際は、適切なアクセス修飾子を使用します。