우테코에서 자동차 미션을 진행하면서, 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 키워드를 붙이면 됩니다.
'Develop > Java' 카테고리의 다른 글
[Java] 원시값 포장에 대해 알아보자 (2) | 2023.02.23 |
---|---|
[Java] 쉽다 쉬워! 전래동화를 통해 알아보는 단위 테스트 (0) | 2023.02.16 |
[Java] 만취한 사람도 쉽게 이해할 수 있는 '일급 컬렉션'에 대해 알아보자! (0) | 2023.02.13 |
[Java] AssertJ 문법과 간단한 예시 (예외처리 검증 추가) (0) | 2023.02.13 |
클린코드에 대해서 알아보자 (리팩토링) (0) | 2022.11.08 |