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
키워드를 붙인 메소드를 재정의할 수 없다.
참조
- 이것이 자바다(이상민 저)