クラスフィールドについて

JAVA

例えば、以下のクラスをnewしてインスタンスを生成する際、インスタンスをnewした回数を取り扱いたい場合は、クラスの中にクラスフィールドという、全インスタンスに共通の情報保存場所が必要になります。
この保存場所をクラスフィールド(またはクラス変数、スタティックフィールド)と呼び、クラス内に宣言することができます。

これまでに作ってきたクラス

class TestClassSub
{
    //フィールドの初期化
    int TestA = 10;
    int TestB = 30;
     
    TestClassSub(int a, int b) {
        //やっていることは「setTest」メソッドを同じ
        TestA = a;
        TestB = b;
    }
     
    TestClassSub() {
    	//引数なしコンストラクタ用
    	
    }
     
    void setTest(int a, int b){
        TestA = a;
        TestB = b;
    }

    int sumAB(){
        return TestA + TestB;
    }
}

上記のクラスに対し、クラスフィールドを加えたクラス

class TestClassSub
{
    //フィールドの初期化
    int TestA = 10;
    int TestB = 30;
    
    static int TestC = 20;
     
    TestClassSub(int a, int b) {
        //やっていることは「setTest」メソッドを同じ
        TestA = a;
        TestB = b;
    }
     
    TestClassSub() {
    	//引数なしコンストラクタ用
    	
    }
     
    void setTest(int a, int b){
        TestA = a;
        TestB = b;
    }

    int sumAB(){
        return TestA + TestB;
    }
}

上記のTestClassSubクラスを使う場合、一度、クラスのインスタンスを生成し、クラスフィールドを加算するメソッドを何度か呼んでみます。

public class TestClass5 {

    public static void main(String[] args) {
        
        int retA;
        
        System.out.print("hello\n");
        
        //引数なしコンストラクタ
        TestClassSub tc = new TestClassSub();
       
        retA = tc.countUpTestC();
        System.out.print("retA -> " + retA + "\n");
        retA = tc.countUpTestC();
        System.out.print("retA -> " + retA + "\n");
        retA = tc.countUpTestC();
        System.out.print("retA -> " + retA + "\n");
        retA = tc.countUpTestC();
        System.out.print("retA -> " + retA + "\n");
        retA = tc.countUpTestC();
        System.out.print("retA -> " + retA + "\n");
        
    }
}

class TestClassSub
{
    //フィールドの初期化
    int TestA = 10;
    int TestB = 30;
    
    static int TestC = 20;
     
    TestClassSub(int a, int b) {
        //やっていることは「setTest」メソッドを同じ
        TestA = a;
        TestB = b;
    }
     
    TestClassSub() {
    	//引数なしコンストラクタ用
    	
    }
     
    void setTest(int a, int b){
        TestA = a;
        TestB = b;
    }

    int sumAB(){
        return TestA + TestB;
    }

    int countUpTestC(){
        return TestC++;
    }

}


すると、実行した結果は次のようになります。

hello
retA -> 20
retA -> 21
retA -> 22
retA -> 23
retA -> 24

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です