# Table of Contents
# final
키워드final
은 크게 세 가지 용도로 사용된다.
# 상수
키워드 final
은 변수를 값을 변경할 수 없는 상수로 만드는데 사용한다.
final String NAME = "Paul";
이렇게 선언된 상수는 값을 변경할 수 없다.
NAME = "John"; // 아래와 같은 오류가 발생합니다.
// Cannot assign a value to final variable 'NAME'
# 상속 불가능한 클래스
부모 클래스에 final
을 붙여보자.
// 부모 클래스 Person
final class Person {
String name;
Person(String name) {
this.name = name;
}
void printName() {
System.out.println(name);
}
}
이 클래스는 상속할 수 없다.
// 다음과 같은 오류가 발생합니다.
// Cannot inherit from final 'Person'
class Programmer extends Person {
Programmer(String name) {
super(name);
}
}
# 오버라이드 불가능한 메소드
부모 클래스 메소드 앞에 final
을 붙으면 오버라이딩이 불가능하다.
// 부모 클래스
class Person {
String name;
Person(String name) {
this.name = name;
}
// final 메소드
final void printName() {
System.out.println(name);
}
}
// 자식 클래스
class Programmer extends Person {
Programmer(String name) {
super(name);
}
// 다음과 같은 오류가 발생합니다.
// 'printName()' cannot override 'printName()' in 'Person'.
// overridden method is final.
void printName() {
System.out.println(name);
}
}