반응형
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 |