본문 바로가기
Java

[Java] final란 무엇인가?

by yukuda 2024. 5. 10.
728x90

final 키워드에 대해 잘 알고있다고 자신했지만 공부해보니 아직 부족한 점이 있어 블로그를 남기게 되었다.

final 키워드란

Java에서 final 키워드는 변수, 메서드, 또는 클래스에 대한 변경 불가능성을 지정하는 데 사용된다. final 키워드를 사용하면 그 요소는 한 번 할당되거나 정의된 후 변경될 수 없다. 이는 코드의 가독성, 안정성, 유지보수성을 향상시키는데 도움이 된다.

사용법

1. 변수에 final 사용

- 지역 변수: final로 선언된 지역 변수는 한 번만 값을 할당할 수 있다. 초기화 이후, 그 값은 변경될 수 없다.

- 필드(맴버 변수): 객체의 필드에 final을 사용하면, 객체가 생성될 때 필드를 초기화해야 하며, 그 이후에는 그 필드의 값을 변경할 수 없다.

- 파라미터: 메서드의 파라미터를 final로 선언하면, 메서드 안에서 파라미터의 값을 변경할 수 없다. 이는 메서드 안에서 파라미터가 참조하는 데이터의 무결성을 유지하는 데 도움이 된다.

2. 메서드에 final 사용

- final로 선언된 메서드는 하위 클래스에서 오버라이드 될 수 없다. 이를 통해, 상위 클래스의 기본 동작을 보존하고 변경되지 않게 한다.

3. 클래스에 final 사용

- final로 선언된 클래스는 다른 클래스가 상속할 수 없다. 즉, final 클래스는 확장될 수 없으며, 항상 기본 형태를 유지한다. 이는 보안과 불변성을 유지하는 데 유용하다.

불변 객체와의 차이점

final 변수는 변수의 재할당을 막지만, 객체의 내부 상태 변화는 막지 않는다. 반면, 불변 객체는 객체가 생성된 후에는 그 상태가 절대로 변하지 않음을 보장한다. 둘 다 코드의 안정성과 예측 가능성을 높이는 데 기여하지만, 적용되는 범위와 의미가 다르다.

- 예를 들어, final로 선언된 List 객체는 다른 List 객체로 재할당될 수는 없지만, 리스트에 항목을 추가하거나 제거하는 것은 가능하다.

final List

- 불변 객체의 예로는 String, Integer 등 Java의 표준 라이브러리에 포함된 클래스들이 있다. 이러한 객체들은 내부 상태를 변경하는 메소드를 제공하지 않는다.