final
은 무엇일까.
변수(variable), 메서드(method), 클래스(class)에 사용될 수 있다.
final은 무언가를 제한한다는 의미를 지닌다.
final 변수는 값을 할당하면 더 이상 수정할 수 없다 (read-only). 때문에 초기화는 필수이다. 꼭 선언과 초기화를 같이 할 필요는 없다. 선언은 함께하고 각 메서드에서 다른 값으로 초기화할 수도 있다.
public class Service {
public void variableFinal() {
final int value = 2;
final Person person = new Person("Lucy", 29);
// value = 3; -> 컴파일 에러
// person = new Person("Jane", 29); -> 컴파일 에러
person.setAge(10);
person.setName("Son");
}
}
위와 같이 객체 내부 변수는 변경이 가능하나, 객체 자체를 변경할 순 없다.
static은 메모리에 한 번만 할당, 즉 같은 주소값을 공유한다.
static final을 함께 사용하면 효율성이 높아진다.
메서드에 final을 붙이면 override를 제한한다.
final 키워드를 클래스에 붙이면 상속 불가능 클래스가 된다.
보안아니 효율성 측면에서 장점이 있다.