PHP

php 객체 지향 프로그램 (6)

hanhxx 2023. 7. 18. 23:20

Step :: final 

앞에서 살펴보았을 때, 클래스를 상속받기 위해서는 extends keyword를 사용했다!

final keyword는 이와 반대되는 개념으로 상속받지 못하게 제한할 때 사용하는 키워드이다. 

 

 

final keyword는 클래스 OR 메서드에만 사용할 수 있는 키워드로 클래스에 사용한 경우를 예시로 알아보자!

<?php

final class Cat {
    public function say() {
        echo "냐옹<br/>";
    }
}

$cat = new Cat();
$cat->say();

class Cat2 extends Cat {
    public function say() {
        echo "미야옹<br/>";
    }
}

$cat2 = new Cat2();
$cat2->say();

클래스 Cat은 final 키워드가 사용되어 어떤 클래스가 Cat 클래스를 상속받으려 할 때 에러가 발생할 것이다.

클래스 Cat2는 extends 키워드를 사용해 Cat 클래스를 상속 받고자 하지만 결과를 보면 

 

 

예상대로 final class를 상속할 수 없다는 문구가 에러를 알려주고 있다. 

 

 

만약 메서드에 final keyword를 사용하고자 할 땐,

접근 제어자(public, private, protected) 앞에 final을 작성하면 된다. 

final public function sound() {...}