IT/Java

자바 static, 클래스변수, 인스턴스변수 사용 예제

노마드오브 2018. 7. 20. 23:36

package test;




class Account {

// 멤버변수 인스턴스변수 정수형 count 클래스변수 total

int count;

static int total;


// static 초기화 코드블록 또는 static 메소드 안에서는

// this 또는 super 참조변수를 사용 못함!

// 왜냐하면 this 또는 super는 객체를 지정하는 용도이기 때문


Account(int num) {

count = count + num;

total = total + num;

}

static void showTotal() {

System.out.println("total:" + total);

}

} // Account



public class Test2 {


public void methodA() {

System.out.println("methodA()");

}

public static void methodB() {

System.out.println("methodB()");

}

public static void main(String[] args) {

// methodA(); // 인스턴스단위 메소드인데 객체생성을 안하고 호출했으니 오류

methodB(); // 클래스단위 메소드이므로 객체생성없이 호출 가능

Test2.methodB(); // 클래스 단위 메소드 호출 이 형식으로 권장

Test2 t = new Test2();

t.methodA();

System.out.println("================");


// total 출력

System.out.println("total : " + Account.total);  // 0 


// showTotal() 호출

Account.showTotal();  // 0


// 객체생성 acc1

Account acc1 = new Account(10);

// total 출력

System.out.println(Account.total); // 10

// count 출력

System.out.println(acc1.count); // 10


// 객체생성 acc2

Account acc2 = new Account(10);

// total 출력

System.out.println(Account.total); // 20

// count 출력

System.out.println(acc2.count); // 10

} // main()


}