코딩/Java
자바 - 클래스의 메소드 오버라이드 못하게 하는 법 (final 키워드)
Junoni
2024. 11. 21. 05:48
반응형
설계한 클래스를 상속은 가능하지만 해당 클래스의 특정 메소드만 수정(오버라이드)를 금지하고 싶을 때, final 키워드를 사용한다.
예시: final 키워드 없는 메소드
class Phone {
public void charge() {
System.out.println("충전");
}
}
Phone 클래스는 charge() 메소드를 지닌다.
Phone 클래스를 상속한 클래스들은 charge() 메소드를 사용할 수 있고 charge() 메소드를 오버라이드 할 수 있다.
만약 Phone 클래스를 설계한 개발자가 Phone 클래스의 charge() 메소드 코드를 상속한 클래스에서도 동일한 charge() 메소드 코드로 유지시키고 싶으면 final 키워드를 삽입하면 된다.
예시: final 키워드가 붙은 메소드
class Phone {
public final void charge() {
System.out.println("충전");
}
}
class Galaxy extends Phone {
@Override
public final void charge() { // error: charge() in Galaxy cannot override charge() in Phone
System.out.println("갤럭시 충전");
}
}
Galaxy 클래스가 Phone 클래스를 상속했다.
Galaxy 클래스에서 이미 final로 명시된 charge() 메소드를 오버라이딩할 경우 컴파일 시, 위와 같은 에러가 난다.
반응형