상속 막기

앞에서 오버라이딩을 할 수 없도록 하는 방법에 대해서 알아봤습니다.
오버라이딩을 할 수 없도록 할 메소드의 접근제한자 앞에 final 키워드를 사용했죠.
클래스를 선언할 때 final을 사용하면 상속을 못하게 합니다.

클래스에 final 사용 방법

final class 클래스명{}

그럼 예제를 통해서 알아 봅시다.

<?php

    final class GoogleCar
    {

    }

    class Car extends GoogleCar
    {
        public function hello()
        {
            return 'hello';
        }
    }
    $ever = new Car;
    echo $ever->hello();

?>

위의 코드는 final을 사용하여 GoogleCar를 상속할 수 없도록 했습니다.
그런데 Car클래스가 상속을 받고 있네요.
그래서 오류가 발생합니다.

위 코드의 결과

위 코드에서 final을 지우면 상속을 허용하므로 오류가 발생하지 않습니다.

<?php

    class GoogleCar
    {

    }

    class Car extends GoogleCar
    {
        public function hello()
        {
            return 'hello';
        }
    }
    $ever = new Car;
    echo $ever->hello();

?>

위 코드의 결과

이렇게 final키워드에 대해서 알아봤습니다.