[Java] final 키워드

2020. 4. 18. 20:29Programming Languages/Java

final

자바에서 final은 '변경할 수 없는' 의미를 가지는 키워드이다. final은 3군데에 적용할 수 있다.

  1. 클래스
  2. 메서드
  3. 필드

1. final class

클래스 이름 앞에 사용된 final은 클래스를 상속받을 수 없음을 선언한다.

final class FinalClass { // 이 클래스 상속 불가
    // ...
}

class SubClass extends FinalClass { // 컴파일 오류 발생.
    // ...
}

2. final method

메소드 이름 앞에 사용된 final은 해당 메서드가 오버라이딩할 수 없음을 선언한다.

자식 클래스가 부모 클래스의 특정 메소드를 오버라이딩하지 못하게 하고 무조건 상속받아 사용하도록 하고자 할 때 사용한다.

public class SuperClass {
    protected final int finalMethod() { ... } // 자식이 오버라이딩 불가
}

class SubClass extends SuperClass {
    protected int finalMethod() {...} // 컴파일 오류.
}

3. final field

필드 이름 앞에 사용된 final은 해당 필드는 상수임을 선언한다. 상수는 값이 고정된 수라는 뜻이며 한 번 초기화되면 값을 변경할 수 없다.

class SharedClass {
    public final double PI = 3.14; // 해당 필드는 수정 불가
    
    public static void main(String[] args) {
        PI = 3.15; // 컴파일 오류
    }
}

'Programming Languages > Java' 카테고리의 다른 글

[Java] 상속과 접근 지정자  (0) 2020.04.21
[Java] 상속(extends)  (0) 2020.04.21
[Java] static 키워드  (0) 2020.04.18
[Java] 접근 지정자  (0) 2020.04.18
[Java] 객체의 소멸과 가비지 컬렉션  (0) 2020.04.14