final 의미
final을 이용해서 선언한 메소드는 서브 클래스에서 오버라이딩(overriding)이 안된다.
오버로딩(overloading)은 가능하다.
final 예제 및 설명
class parent {
void print() {
System.out.println("Hi parent");
}
}
class child extends parent {
void print() {
System.out.println("Hi child");
}
}
위에 코드는 자식 클래스에서 부모 클래스에 있는 메소드를 오버라이딩 하고 있다. 하지만 부모 클래스에 메소드 앞에 final을 붙이게 되면 어떻게 될지 아래 코드를 살펴보자.
class parent {
final void print() {
System.out.println("Hi parent");
}
}
class child extends parent {
void print() {
System.out.println("Hi child");
}
}
Cannot overide the final method from 부모 클래스
영문 그대로 부모 클래스에 final 메소드를 서브 클래스(자식 클래스)에서 오버라이딩 할 수 없다고 에러 문구가 뜬다. 그래서 fianl 키워드는 서브 클래스에서 오버라이딩 하는 것을 방지할 때 주로 사용된다.