클래스 멤버

 

인스턴스 상태인 변수의 값이 인스턴스마다 다른값을 가질 수 있다는 점은

한개의 클래스를 여러개의 인스턴스로 만들어서 사용할 수 있다는점에서 좋은기능이다.

 

그런데 경우에 따라 인스턴스가 모두 같은 값을 공유하게 하고싶을때는?

아래코드는 각 인스턴스마다 원주율 값을 가질 필요가 없어서 원주율 PI 를 클래스의 소속인 멤버로 만들었다

class Calculator {
    static double PI = 3.14;
    int left, right;
 
    public void setOprands(int left, int right) {
        this.left = left;
        this.right = right;
    }
 
    public void sum() {
        System.out.println(this.left + this.right);
    }
 
    public void avg() {
        System.out.println((this.left + this.right) / 2);
    }
}
 
public class CalculatorDemo1 {
 
    public static void main(String[] args) {
 
        Calculator c1 = new Calculator();
        System.out.println(c1.PI);
 
        Calculator c2 = new Calculator();
        System.out.println(c2.PI);
 
        System.out.println(Calculator.PI);
 
    }
 
}

static을 멤버(변수, 메서드)앞에 붙이면 클래스의 멤버가 된다.

클래스 소속의 변수

static double PI = 3.14;

 

 

- 클래스 변수에 접근하는 방법 2가지

1. 인스턴스를 통해서 PI 접근

System.out.println(c1.PI);

2. 클래스를 통해서 PI 접근

이 경우는 인스턴스를 생성할 필요 없이 Calculator클래스에 직접 접근

System.out.println(Calculator.PI);

 

정리해서 클래스 변수의 용도는

  • 인스턴스에 따라서 변하지 않은 값이 필요한 경우
  • 인스턴스를 생성할 필요가 없는 값을 클래스에 저장하고싶은 경우
  • 값의 변경사항을 모든 인스턴스가 공유해야하는 경우
반응형
LIST

+ Recent posts