출처 혼자공부하는자바
final 키워드는 클래스, 필드, 메소드를 선언할 때 사용할 수 있는데, 해당 선언이 최종 상태이고 결코 수정될 수 없음을 뜻한다. final 키워드는 클래스, 필드, 메소드 선언에 사용될 경우 해석이 조금 씩 달라진다.
1.필드를 선언할 때 final이 지정되면 초기값 설정후 더이상 값을 변경할수 없다
2.클래스와 메소드를 선언할 때 final키워드가 지정되면 상속과 관련이 있다는 의미이다. 그렇다면 클래스와 메소드에 final이 지정되면 어떤 효과가 나타나나?
클래스를 선언할 때 final 키워드를 class 앞에 붙이면 이 클래스는 최정적인 클래스이므로 상속할 수 없는 클래스가 된다. 즉, final 클래스는 부모 클래스가 될 수 없어 자식 클래스를 만들 수 없다.
public final class String{
...
}
final 클래스의 대표적인 예는 자바표준 api에서 제공하는 String 클래스이다. String 클래스는 다음과 같이 선언되어 있다.
public final class String {...}
그래서 다음과 같이 자식 클래스를 만들수 없다.
public class NewString extends String {...}
메소드를 선언할 때 final 키워드를 붙이면 이 메소드는 최정적인 메소드이므로 재정의할 수 없는 메소드가 된다. 즉, 부모 클래스를 상속해서 자식 클래스를 선언할 때 부모 클래스에 선언된 final메소드는 자식 클래스에서 재정의 할 수 없다는 것.
갑자기 생각난것 private 필드 메소드는 겟셋을이용해서 바꿔주며 public은 바로 재정의할때 바로 할당가능하나, 왜만하면 private지정후 게터 세터로 지정하자