[Java] final? 뭐지?

Kai·2022년 12월 8일
0

Java

목록 보기
3/16

🧐 시작


Java로 개발을 하다보면 final 키워드를 자주 만나게 된다.
그럴 때마다 나는 이런 생각을 한다. '어이 javac, 이 녀석은 여기서 끝이다 쿡쿡'
여기서 알 수 있는 것은 나는 final에 대해서 어중간하게 알고 있다는 것이다.

그래~서! 이번 글에서는 final 키워드에 대해서 세세하게 알아보는 시간을 가져보겠다. 😎


📖 사전적 의미


역시 뭔가를 공부할 때는 '사전적 의미'를 빼놓을 수 없다.
위키피디아에 정리된 final이란 다음과 같다.

final은 여러 context에서 사용되는데, 오직 한번만 할당될 수 있는 context에 사용한다.

즉, final이 붙은 context(변수, 함수, 클래스)의 값은 변할 수 없는 것이다.

자, 그렇다면 실제 예시들을 살펴보자.


⭐ final 변수


먼저 아래와 같이 final이 붙은 변수와 붙지 않은 변수가 있다고 가정해보자.

public class DemoApplication {
	String name = "kai";
	final String finalName = "kai";
}

각 변수를 다른 값으로 수정하려고 하면, 이렇게 final이 붙은 변수에서는 에러가 나는 것을 확인할 수 있다.

즉, final이 붙은 변수는 초기화를 해준 이후에는 다시 수정할 수 없다.


⭐ final 함수


함수 또한 변수와 마찬가지로 final 키워드가 붙으면 재정의 할 수 없게 된다.

다음 예시를 보면, Prarent에서 final로 선언된 func2 메서드를 Child에서 상속받아 다시 정의하려고 하는 상황이다.
이 때, 재정의할 수 없다는 에러가 보여지고 있다.


⭐ final 클래스


final이 클래스에 붙어면 변수, 함수와 마찬가지로 재정의할 수 없게 된다.
클래스를 재정의하는 것은 다른 클래스를 상속받아서 뭔가를 하는 경우이고, 아래와 같이 final이 붙은 클래스를 상속받으려 하자 에러가 출력되는 것을 확인할 수 있다.


💻 정리


이번 글에서는 fianl에 대해서 알아봤다. final에 대해서 간단히 정리하면 이럴 것이다.

final 키워드는 해당 context를 재정의하지 못하도록 제한한다.

0개의 댓글