Java
final 키워드에 대한 고찰
고인돌개발자
2021. 5. 11. 23:21
학습목표 : final 키워드에서 주의할 점을 알아본다.
final 은 최종이다.
클래스, 변수, 메소드에서 여기가 마지막이라는 표시를 해준다.
아래 예시를 통해 익혀보자.
1. final Class
- 최종 Class 로 final 은 상속을 허락하지 않겠다는 의미이다.
- 요즘말로, 딩크족이다. 아이를 낳지 않겠다니..
public final class Cat_Super {
}
// 상속을 허용하지 않아서 오류 발생
class Cat_Child extends Cat_Super {
}
2. final 변수 = 상수
- 변경 불가능한 변수 즉 상수가 된다.
- 단, 초기화 되지 않은 상수의 값은 static, 지역변수를 구분하여 초기화가 가능
package book.oopforsprings.lec04._final;
public class FinalMain {
public static void main(String[] args) {
// TODO Auto-generated method stub
Cat cat = new Cat();
}
}
class Cat {
final static int age=10;
final static int age2;
final int weight=20;
final int weight2;
// static 은 static 블록에서만 변경 가능
static {
// age=11; 최초 초기값이 있는 변수는 값을 받지 못함
age2=21; // 상수 초기화 가능
}
// 아래는 오류 발생.
public Cat() {
//weight=11; // final 상수의 변경은 허용되지 않음
weight2=21; //
}
}
3. final Method
- 최종 Method 로서 , 재정의(Overriding)을 할 수 없다.
public class Cat_Super {
public void doOK() {
}
// 내가 마지막이야.. 더 사용하지 못해
public final void doNO() {
}
}
class Cat_Child extends Cat_Super {
public void doOK() {
System.out.println("I can override of doOK method...");
}
//Cannot override the final method from Cat_Super
public void doNO() {
System.out.println("I can override of doOK method...");
}
}