본문으로 건너뛰기

Final

1 final 키워드

  • final 키워드는 클래스, 필드, 메소드 선언 시 사용 할 수 있다.
  • final 키워드는 해당 선언이 최종 상태이고, 결코 수정될 수 없음을 나타낸다.

2 final 필드

  • final 이 붙은 필드는 초기값이 저장되면 이것이 최종적인 값이 되어 프로그램 실행 도중에 수정할 수 없다.
  • final 필드의 값 초기화 하는 법은 2가지가 존재한다.
    • 필드 선언시 초기화
    • 생성자로 초기화

2.1 상수(static final)

  • 일반적으로 불변의 값을 상수라고 부른다.

    • 예시) 원주율 파이
  • final 필드가 상수일까?

    • final 는 상수가 아니다.
    • 이유: 불변의 값은 객체마다 저장할 필요가 없는 공용성을 가지고 있기 때문이다.
  • 따라서 상수는 static final 이 되어야 한다.

    • static final 필드는 객체마다 저장되지 않고 클래스에 포함된다.
  • 상수 이름은 모두 대문자로 작성하는 것이 관례이다.

예시

package java.lang;

public final class Math {
public static final double PI = 3.14159265358979323846;
...
}

3 final 클래스

  • 클래스에 final 키워드를 붙이면 해당 클래스는 최종적인 클래스이므로 상속할 수 없는 클래스가 된다.
  • 즉, 부모 클래스가 될 수 없다.

예시

public final class String {
...
}

아래와 같이 상속이 불가능하다

// 불가능
public class NewString extends String{

}

4 final 메소드

  • 메소드를 선언할 때 final키워드를 붙이게 되면 해당 메소드는 최종적인 메소드이므로 오버라이딩 할 수 없다.
  • 즉 부모 클래스를 상속한 자식 클래스에서 부모의 final키워드를 붙인 메소드를 재정의할 수 없다.

참조

  • 이것이 자바다(이상민 저)