1.final의 용도
상수는 변하지 않고 항상 일정한 값을 갖는 수static final키워드를 사용해 선언static 으로 선언된 변수는 프로그램 시작시 한번만 초기화되고 모든 인스턴스에서 같은 값을 공유불변객체는 내부 상태를 변경할 수 없는 객체final을 속성에 활용setter없이 설계String, Integer, 래퍼클래스 등public class Circle {
final static double PI = 3.14159; // ✅ 직접 만든 원주율 상수
double radius; // ⚠️ final 로 선언되어 있지 않기 때문에 외부에서 변경 가능
Circle(double radius) {
this.radius = radius;
}
}
final Circle c1 = new Circle(2);
c1 = new Circle(3); // ❌ final은 변수 c1이 한 번 참조한 객체는 다른 객체로 변경될 수 없음을 의미함 (참조 불변)
// 하지만 객체 내부의 속성 값은 변경 가능 (불변 객체가 아님)
c1.radius = 3; // ⚠️ 내부 상태 변경 가능 (객체 자체가 불변이 아님)
public final class Circle {
final static double PI = 3.14159;
final double radius; // ✅ final 로 선언해서 값이 변경되지 않도록 합니다.
Circle(double radius) {
this.radius = radius;
}
}