Dev/Java
[Java] final 키워드
kjyyjk
2022. 7. 16. 20:25
final 키워드는 클래스, 필드 , 메서드 선언 시에 사용할 수 있다.
필드 선언 시에 final을 붙이면 초기값으로 설정되어, 더 이상 수정할 수 없다는 것을 앞에서 확인 했었다.(like 상수)
그러면 만약 final 키워드를 클래스와 메서드 선언 시에 붙이면 어떻게 될까?
public final class String{
...
}
String 클래스는 자바 표준 api에서 제공하는 대표적 final 클래스이다.
이처럼 클래스를 선언할 때 final을 붙이면 이 클래스는 최종적인 클래스로 되어서 상속을 할 수가 없다.
따라서 final 클래스는 상속을 하지 못하므로 , 자식 클래스도 없고 부모 클래스도 아니다.
public final class Food extends{ //Food 클래스는 final과 함께 선언되어 상속할 수 없는 final클래스
String name;
}
public class Banana extends Food{ //상속 받지 못한다. 에러.
} // Food 클래스는 상속이 불가하므로
ㄴ> 에러. 불가.
메서드도 같은 맥락이다.
메서드 선언 시에 final 키워드를 붙이면 최종적인 메소드이므로 오버라이딩 할 수 없다.
즉, 부모 클래스로부터 상속 받을 때 부모 클래스의 final 메서드는 자식 클래스에서 재정의 할 수 없다.
public class Food{
public final void cut(){
System.out.println("과일을 자릅니다.")
}
}
public class Banana extends Food{
public void cut(){ x x x x x x } //cut 메서드는 final 메서드이므로 오버라이딩 할 수 없다
}