반응형
설계한 클래스를 상속은 가능하지만 해당 클래스의 특정 메소드만 수정(오버라이드)를 금지하고 싶을 때, 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() 메소드를 오버라이딩할 경우 컴파일 시, 위와 같은 에러가 난다.
반응형
'코딩 > Java' 카테고리의 다른 글
자바 - String 값을 boolean 값으로 변환하는 법 (0) | 2024.11.27 |
---|---|
자바 - 인터페이스에 default 메소드 사용 이유 (0) | 2024.11.24 |
자바 - 문자열에서 문자열 추출하기 (substring() 메소드) (0) | 2024.11.18 |
자바 - 클래스 상속 못하게 하는 법 (final 키워드) (2) | 2024.11.18 |
자바 - 문자열에서 특정 문자/문자열 찾기 (indexOf() 메소드) (0) | 2024.11.17 |