1. final 제어자


# 수정을 금지하는 final 제어자

final 제어자를 사용하여 선언한 자원은 재정의를 할 수 없음을 의미 

즉, 상수를 뜻한다. 


1) 일반 변수와 구분짓기 위하여 변수명을 대문자로 하며 두 단어 사이에 _ 를 사용하여 정의한다. 


2) final 제어자의 특징

(1) 생성자는 final 키워드를 사용할 수 없다. 


(2) 클래스 선언부에 final 키워드를 사용한 경우 클래스는 상속될 수 없다. 

- final 키워드를 사용한 클래스가 상속된다면 재정의를 의미하는 오버라이딩 기법이final 키워드의 의미와 상충되기 때문이다. 

- 상속을 방지하고자 할 때, 클래스에 final 키워드를 선언해서 사용한다. 


(3) 메소드 선언부에 final 키워드를 사용한 경우 메소드는 오버라이딩될 수 없다. 

- final 키워드가 재정의할 수 없도록 제한하기 때문이다. 

- 오버라이딩을 계속 진행하기 위해서는 메소드의 final 제어자를 제거해야 한다.


(4) 변수 선언부에 final 키워드를 사용한 경우 변수는 변경될 수 없다. 

- 기본형을 사용해서 선언한 변수나 참조형을 사용해서 선언한 변수에 final 키워드를 사용한 경우 그 값은 상수로 처리된다. 

- final로 선언한 변수는 값이 다시 설정한다고 해도 값이 설정되지 않고 컴파일 에러를 발생시킨다. 



# final 제어자 예제 

1
2
3
4
5
6
7
8
9
10
// 일반 변수: 재정의 가능 
int buttonNum = 10;
buttonNum = 15;
System.out.println(buttonNum);    // 15
 
// final 변수(상수): 재정의 불가능, 대문자, _ 
final int CAR_NUM = 10;
 
// CAR_NUM = 15;  // 불가능 
System.out.println(CAR_NUM);    // 10
cs