final

Develope/Java 2020. 5. 11. 21:54
반응형

final이라는 키워드를 한마디로 표현하자면 "변화를 허용하지 않는다!"라고 생각하고 접근하면 쉽다.


final 이라는 키워드가 사용될 수 있는 곳은 세 군데이다.

1) final 클래스

2) final 메소드

3) final 필드, 상수 정의


이에 대해 하나씩 살펴보도록 하자.


1) final 클래스

 : final이 클래스 이름 앞에 사용되면 해당 클래스를 상속받을 수 없음을 지정한다.


1
2
3
4
5
6
7
final class FinalClass {
    ...
}
 
class rootable extends FinalClass { // 컴파일 오류 
    ...
}
cs


2) final 메소드

 : 메소드 앞에 final 속성이 붙으면 이 메소드는 더 이상 오버라이딩할 수 없음을 지정한다.

 : 자식 클래스가 부모 클래스의 메소드를 오버라이딩하지 못하게 하고 무조건 상속받아서 사용하도록 하고자 한다면 해당 메소드를 final로 지정하면 된다.

1
2
3
4
5
6
7
public class FinalClass {
    protected final int finalMethod() { ... }
}
 
class rootable extends FinalClass { 
    protected int finalMethod() { ... } // 컴파일 오류, 오버라이딩 불가 
}
cs


3) final 필드, 상수 정의

 : 자바에서 상수를 정의할 경우에는 필드에 final 속성을 붙이는 것으로 한다.

1
2
3
4
5
6
7
8
9
public class FinalClass {
    final int ROW=10;    // 상수 정의 및 초깃값 설정
    final int COL;        // 컴파일 오류, 초기값이 설정되지 않았음
 
    void f() {
        int[] intArray = new int[ROW];    // 상수 활용
        ROW = 30;        // 컴파일 오류, 상수는 값 변경이 불가능함.
    }
}
cs


※ final로 상수 필드 정의 시 주의할 점

 - 상수 필드는 선언 시 초깃값을 지정해야 한다.

 - 상수 필드는 한 번 정의될 경우 값을 변경할 수 없다.

 - 클래스 내부에서 final 키워드만 이용할 경우 해당 클래스 객체들만 이용할 수 있으므로, 프로그램 전체에서 사용할 상수일 경우 static 키워드와 함께 사용하여야 한다. ( 보통 프로그램 전체에서 사용할 상수는 public static final로 선언한다)

반응형

'Develope > Java' 카테고리의 다른 글

Java의 정석 정리 - 1장 자바를 시작하기 전에  (0) 2020.06.28
끝말잇기 게임  (0) 2020.05.14
static 멤버  (0) 2020.05.11
접근 지정자  (0) 2020.05.10
가비지와 가비지 컬렉션  (0) 2020.05.10
블로그 이미지

rootable

,