final

final 키워드가 붙으면 값을 못 바꾼다고 생각하면 된다. 그래서 특정 변수의 값을 할당한 이후에 변경하지 않아야 할 때 final을 사용하면 된다.

  • final 지역변수
    • 지역변수에 final을 설정하면 최초 한 번만 할당할 수 있다.
    • 이후 값을 변경할 수 없다. 변경을 시도할 때 컴파일 에러가 발생한다
    • 매개변수에 final을 설정하면 메서드 내부에서 매개변수의 값을 변경할 수 없다
  • static final - 상수
    • 상수를 만들 때 사용한다
    • static final 변수명은 대문자에 _(언더 스코어)의 형태로 작성해야 한다. CONSTANT_VALUE **처럼 말이다
    • 상수는 공용으로 사용되므로 주로 public을 붙여 public static final 로 많이 사용한다.
    • 상수는 런타임에 변경할 수 없다. 그래서 변경하려면 프로그램 종료 후 코드를 변경한 다음 다시 실행해야 변경사항이 반영된다.
    • 중앙에서 값을 하나로 관리할 수 있다는 장점이 있다

 

final 대신 static final을 사용해야 하는 이유

 

final value = 10; 처럼 필드를 설정한다면 매 인스턴스마다 값이 10이 할당될 것이다. 그런데 변수가 final 이므로 변경도 못하는데 매 인스턴스마다 value = 10 이 할당되어 있으니 결국 메모리 낭비가 될 것이다. 따라서 final에 static 을 붙여서 공용으로 사용하는 값(MY_VALUE = 10)을 만들어 모든 인스턴스가 이 하나를 가지고 사용하면 메모리 낭비가 줄어들 것이다. 따라서 상수를 만들려면 웬만해선 static final로 만들자!

 

final과 상속/오버라이딩

final을 사용하면 클래스는 상속이 불가능하고, 메서드는 오버라이딩이 불가능하다.

 

 

Reference

인프런 '김영한의 실전 자바 - 기본편'

'Dev Language > Java' 카테고리의 다른 글

[자바/기본] 10. 다형성1  (0) 2024.01.17
[자바/기본] 9. 상속  (0) 2024.01.16
[자바/기본] 7. 자바 메모리 구조와 final  (0) 2024.01.16
[자바/기본] 6. 접근 제어자  (0) 2024.01.16
[자바/기본] 5. 패키지  (0) 2024.01.04

+ Recent posts