final
일정한 값을 지녀야 하는 상수에 할당하여 값이 변하지 못하도록 하는 키워드
- final 키워드는 변수, 메소드, 클래스에 다양한 방식으로 사용할 수 있다.
final 변수
final 변수는 선언되는 동시에 초기화되어야 하며, 초기화 후 값을 변경할 수 없다.
final변수는 지역 변수와, 필드 변수로 나눌 수 있다.
지역 변수
final로 선언된 지역 변수는 값을 단 한 번만 할당받을 수 있다.
- 이는 초기화 후 그 값이 변경되지 않음을 보장한다.
- 이를 통해 상수 값을 정의하거나, 익명 클래스 또는 람다 표현식 내에서 변경되지 않는 변수를 사용할 때 사용된다.
필드 변수
final로 선언된 필드는 객체 생성 시 초기화되어야 하며, 그 후에는 변경할 수 없다.
- 객체의 불변 속성을 정의하는 데 사용된다.(의존성 주입 시 불변 객체 사용)
- 클래스가 인스턴스화될 때 생성자에서 초기화되거나 필드에서 선언 시 초기화된다.
final 메소드
final로 선언된 메소드는 하위 클래스에서 오버라이드(재정의)할 수 없다.
- 이를 통해 부모 클래스의 특정 동작을 모든 하위 클래스에서 일관되게 유지하고자 할 때 사용된다.
- 즉, 메소드의 구현을 고정시켜 상속을 통한 변경을 방지한다.
final 클래스
final로 선언된 클래스는 상속될 수 없다.
- 클래스의 동작을 변경할 수 없도록 고정시키고자 할 때 유용하며, 보안과 불변성을 보장할 수 있다.
- 예를 들어,
java.lang.String 클래스는 final로 선언되어 있어 다른 클래스가 이를 상속할 수 없다.