final 키워드는 자바에서 사용되는 한정자(modifier)로, 변수, 메서드, 클래스에 적용될 수 있습니다. final 키워드가 적용된 요소는 변경될 수 없는 불변성(Immutability)을 가지게 됩니다.
- final 필드
final 키워드로 선언된 필드는 상수(Constant)로 취급됩니다. 한 번 초기화되면 그 값을 변경할 수 없습니다. final 필드는 일반적으로 대문자로 작성되며, 초기화는 선언 시 또는 생성자에서 이루어집니다. 상수의 값은 프로그램 실행 도중에 변경할 수 없기 때문에 일반적으로 고정된 값이나 설정값에 사용됩니다.
final int MAX_VALUE = 100; final double PI = 3.14159; final String APPLICATION_NAME; public MyClass() { APPLICATION_NAME = "My Application"; }
- final 메소드
final 키워드로 선언된 메서드는 하위 클래스에서 오버라이딩(재정의)할 수 없습니다. 즉, 해당 메서드의 구현은 변경될 수 없습니다. final 메서드를 사용하면 하위 클래스에서 부모 클래스의 메서드를 변경하지 못하도록 보장할 수 있습니다. 보안, 안정성, 성능 등의 이유로 메서드를 재정의하지 못하도록 막을 때 유용합니다.
public class Parent { public final void doSomething() { // 구현 내용 } } public class Child extends Parent { // 오류: final 메서드는 오버라이딩할 수 없음// public void doSomething() { ... } }
- final 클래스
final 키워드로 선언된 클래스는 상속할 수 없는 클래스입니다. 다시 말해, 다른 클래스에서 해당 클래스를 상속받을 수 없습니다. final 클래스는 확장될 수 없으므로, 클래스의 구현을 변경하지 못하도록 보장할 수 있습니다. 이는 보안, 성능, 안정성 등을 고려할 때 유용합니다.
public final class ImmutableClass { // 구현 내용 } // 오류: final 클래스는 상속할 수 없음// public class SubClass extends ImmutableClass { ... }
👉 final 키워드를 사용하면 값, 메서드, 클래스 등의 변경을 제한하여 의도치 않은 버그나 오류를 방지할 수 있습니다. 또한 컴파일러에게 최적화에 대한 힌트를 제공하여 성능을 향상시킬 수도 있습니다.
Uploaded by N2T