녕의 학습 기록
[Java] final 키워드 본문
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 메서드이므로 오버라이딩 할 수 없다
}
'Dev > Java' 카테고리의 다른 글
[Java] 다형성 (0) | 2022.07.21 |
---|---|
[Java] 접근 제한자 / 싱글톤 패턴 / Getter , Setter (0) | 2022.07.19 |
[Java] 메서드 오버라이딩 (0) | 2022.07.11 |
[Java] 클래스 상속 (0) | 2022.07.08 |
[Java] 객체 생성과 필드 (0) | 2022.07.04 |