클래스 멤버
인스턴스 상태인 변수의 값이 인스턴스마다 다른값을 가질 수 있다는 점은
한개의 클래스를 여러개의 인스턴스로 만들어서 사용할 수 있다는점에서 좋은기능이다.
그런데 경우에 따라 인스턴스가 모두 같은 값을 공유하게 하고싶을때는?
아래코드는 각 인스턴스마다 원주율 값을 가질 필요가 없어서 원주율 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
'공부' 카테고리의 다른 글
JPA (1) | 자바 컬렉션과 JPA의 등장배경, JPA 장점 (0) | 2023.09.08 |
---|---|
메이븐 프로젝트 설정, JPA 설정 (0) | 2023.07.31 |
추상 메소드와 인터페이스 | 다중상속 (0) | 2023.06.27 |
다형성 (0) | 2023.06.22 |
접근 제한자 | 지역변수, 전역변수와 static (0) | 2023.06.22 |