단어로만 이해해도 좋습니다
일단은 어떠한 구성 요소의 구성원이다 라는 정도로 생각 하셔도 됩니다
우리가 객체를 만들 때는 일단 클래스를 정의 합니다
그리고 그 클래스를 이용하여 new 키워드로 인스턴스를 만듭니다
근데 우리가 햇갈리는것 중 하나가 이 멤버는 클래스가 갖고 있냐 인스턴스가 갖고있냐
라고 하는것인데 이건 인스턴스가 갖고 있다고 생각해야합니다
그치만 클래스도 멤버변수를 갖고 있을 수 있습니다
자 이제 소스코드로 확인 해봅시다
저번에 했던 계산 클래스를 예로 들어보도록 할게요
class Calculator {
static CHECK_NUM = 2;
int num1;
int num2;
public void setNum(int num1, int num2) {
this.num1 = num1;
this.num2 = num2;
}
public void sum() {
System.out.println(this.num1 + this.num2);
}
}
public class CalculatorTest {
public static void main(String[] args) {
Calculator c1 = new Calculator();
System.out.println("c1의 CHECK_NUM은 : " + c1.CHECK_NUM);
Calculator c2 = new Calculator();
System.out.println("c2의 CHECK_NUM은 : " + c2.CHECK_NUM);
}
}
아주 간단한 계산 클래스 입니다 더하기만 있죠
이 부분에서 보셔야 할 키워드는 static 입니다 정적이라는 뜻이라고 저번에도 말했었습니다
이처럼 변수 앞에 static 키워드가 붙어있으면 클래스의 멤버가 됩니다
어디서나 사용이 가능하죠 그럼 왜 이런 방식으로 변수를 선언 했을까 라는 의문이 듭니다
음 우리가 어떠한 수학적 공식을 매번 계산하기 싫어서 공식에 대한 클래스를 작성 했다고
해봅시다 그럼 그 클래스 안에서도 매번 같은 값을 가져다가 연산 하는 작업이 있을거에요
그럴때 사용하는것이 멤버를 클래스 멤버로 바꿔버리는 겁니다
이렇게 하면 사실 객체를 인스턴스화 하지 않아도 사용 가능합니다 ㅎㅎ
System.out.println(Calculator.CHECK_NUM);
처럼 사용 가능합니다 ㅎㅎ
다른 곳에서 저 값이 필요할때 굳이 인스턴스 생성하지 않고 사용하는 방법이니 기억합시다
그리고 마지막으로 알려드릴 내용은
인스턴스 생성후 인스턴스 메소드에서는 클래스의 멤버 변수에 접근할 수 있지만
클래스 메소드에서는 인스턴스 멤버에 접근이 불가 함을 숙지하고 넘어가도록 합시다