Giới thiệu
Sử dụng từ khóa final trong định nghĩa phương thức instance của một lớp PHP ngăn chặn việc nó bị ghi đè (override) bởi lớp con. Tương tự, nếu final dùng trong định nghĩa chính class, lớp đó không thể được kế thừa.
Cú pháp
final class myclass {}
class myclass {
final public function mymethod() {}
}
Ví dụ: final method
Trong ví dụ sau, cố gắng ghi đè phương thức final gây ra lỗi:
<?php
class parentclass {
final function test() {
echo "final method in parent class";
}
}
class childclass extends parentclass {
function test() {
echo "overriding final method in parent class";
}
}
$obj = new childclass();
$obj->test();
?>
Lỗi
PHP Fatal error: Cannot override final method parentclass::test()
Ví dụ: final class
Tương tự, class final không thể được kế thừa:
<?php
final class parentclass {
final function test() {
echo "final method in parent class";
}
}
class childclass extends parentclass {
function test() {
echo "overriding final method in parent class";
}
}
$obj = new childclass();
$obj->test();
?>
Lỗi
PHP Fatal error: Class childclass may not inherit from final class (parentclass)