본문 바로가기
Develop/Java

[Java] final 키워드에 대해 알아보자

by 제이._ 2023. 2. 13.

 

우테코에서 자동차 미션을 진행하면서, final 키워드를 제멋대로 사용해서 피드백을 많이 받았습니다.

 

final 이란 지금까지 '바뀌지 않는'으로만 알고 있었는데,

오늘은 final 키워드에 대해 구체적으로 배워보고 언제 사용할지 알아보도록 하겠습니다!

 


 

final : 의미와 역할을 알아봅시다!

  • 재할당 불가를 명시합니다.

 

==> 위에 사진과 같이 final로 선언을 한 age를 재할당 한다면 오류가 발생합니다.

 

 

 

  • final 인자는 메서드 내에서 변경이 불가능합니다!

 

==> 위와 같이 increaseNumber() 메서드의 인자를 final로 받아준다면, final로 넘어오는 number 변수는 읽기만 가능해집니다.

 

 

  • final 키워드를 메서드 앞에 사용한다면, 오버라이드가 안됩니다.

 

  • final 키워드를 클래스 앞에 사용한다면, 다른 클래스에서 상속할 수 없게 됩니다!

 

 

 
 
final 키워드는 다양한 역할을 하네요! 그렇다면 언제 사용해야 할까요?

 

이를 대답하기 위한 여러가지의 관점이 있습니다.

각자의 관점에서 한 번 대답을 해보겠습니다.

 

1. Primitive 관점

  • final은 재할당이 불가능합니다. 따라서 서비스에서 값이 변하지 않게 하고 싶은 부분에 final을 사용합니다!

 

2. Reference 관점

  •  
  • List 같은 주소 값을 갖는 변수 또한 재할당 받을 순 없습니다.
  • 지만, 이런 변수에서 내부 상태의 값은 변경 될 수 있습니다. 밑에 예시를 보겠습니다.

 

다시 한 번 정리해서, 우리는 여기서 final 키워드를 언제쓸지 생각할 수 있습니다.

 

매개변수로 넘어오는 변수에 대해서는 값이 바뀌는 것을 원치 않으면 final을 붙이면 되고..

일반 변수에서 재선언이 되는 걸 원치 않는다면 final을 붙이면 되고

메서드 오버라이딩을 원치 않고, 클래스의 상속을 원치 않으면 fianl 키워드를 붙이면 됩니다.