개발 지식/Java
[Java] static, final, static final의 차이
서하빈
2023. 6. 18. 17:11
1. static
- 객체 생성 없이 필드와 메서드를 사용하고자 할 때
- 공용 데이터에 해당하거나 인스턴스 필드를 포함하지 않는 메서드 선언 시
- 정적 메서드는 객체 생성 없이 바로 사용할 수 있는 특징 때문에 인스턴스 필드나 메서드, 그리고 this 키워드를 사용할 수 없다.
2. final
- 수정이 불가능하다는 의미
- final 필드에 값을 저장하는 방법에는 두 가지가 있다.
public class Shop {
final int closeTime = 21;
final int openTime;
public Shop(int openTime) {
this.openTime = openTime;
}
}
- 선언과 동시에 할당하는 법과 생성자를 통해 주입하는 방법이 있다.
- 생성자를 통해 주입하는 방법은 각 객체마다 필드에 다른 값을 할당할 수 있다.
- 클래스에 사용 시 해당 클래스는 상속이 불가능하다. (더이상 확장할 수 없음 == 수정이 불가능하다는 의미)
3. static final
- 모든 영역에서 고정된 값으로 사용하는 상수를 사용하고자 할 때
- "고정된 + 최종적인"의 의미로, 상수를 선언하고자 할 때 사용된다.
- final 자체만으로 각 객체마다 값이 다를 수 있기 때문에 상수를 의미할 수 없다.