final은 클래스나 메서드의 상속 및 변경을 제한하는 키워드이다.
해당 키워드는 클래스 혹은 메서드에 사용이 가능하며, 아래의 예시처럼 사용이 가능하다.
final class Parent {
...
}
class Son extends Parent { // NG
...
}
클래스에 final이 붙은 경우, 해당 클래스를 상속하는 것만으로도 에러가 발생한다.
class Parent {
public final function method1 () {
...
}
}
class Son extends Parent {
public function method1 () { // NG
...
}
}
부모 클래스로부터 상속을 받아 final이 붙은 메서드를 재정의(오버라이딩)하면 에러가 발생한다.