반응형

단어로만 이해해도 좋습니다 

일단은 어떠한 구성 요소의 구성원이다 라는 정도로 생각 하셔도 됩니다 

 

우리가 객체를 만들 때는 일단 클래스를 정의 합니다 

그리고 그 클래스를 이용하여 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);

처럼 사용 가능합니다 ㅎㅎ 

 

다른 곳에서 저 값이 필요할때 굳이 인스턴스 생성하지 않고 사용하는 방법이니 기억합시다

 

그리고 마지막으로 알려드릴 내용은

 

인스턴스 생성후 인스턴스 메소드에서는 클래스의 멤버 변수에 접근할 수 있지만

클래스 메소드에서는 인스턴스 멤버에 접근이 불가 함을 숙지하고 넘어가도록 합시다 

반응형

'Developer > Java' 카테고리의 다른 글

[java]상속  (0) 2022.08.02
[java]생성자  (0) 2022.07.29
[java]클래스와 인스턴스  (0) 2022.07.21
[java]메서드  (0) 2022.07.19
[java]배열  (0) 2022.07.06
복사했습니다!