field 중 constant(상수), method, class에서 명시할 수 있는 제어자
private final String MY_ID = "javaking";
MY_ID = "angel"; // -> error 재할당 불가
public final void wait(){ } //이 메소드는 자식에서 재정의 불가
예제1)
class FinalExam{
final int MY_NUMBER = 1;
void test() {
// MY_NUMBER = 2;
}
public final void test2() {
}
}
final class Parent{}
//class Child extends Parent{}
public class TestFinal extends FinalExam{
// public void test2() {}
}
final int MY_NUMBER = 1;
final을 명시해서 재할당 불가하게 한다.
void test() {
// MY_NUMBER = 2;
}
MY_NUMBER는 final 상수이므로 재할당이 불가하다.
public final void test2() {
}
메소드에 final 제어자를 명시했기때문에 자식 클래스에서 오버라이딩 불가하다.
final class Parent{}
final class를 명시하면 상속 될 수 없다.
//class Child extends Parent{}
-> final class은 Parent를 상속받을 수 없다.
public class TestFinal extends FinalExam{
// public void test2() {}
}
-> final method는 오버라이딩 할 수 없다.