PHP: Từ khóa final
Từ bản PHP 5 trở đi có giới thiệu về từ khóa final, từ khóa này sẽ ngăn cản không cho lớp con ghi đè phương thức bằng cách đặt trước định nghĩa phương thức đó từ khóa final. Nếu bản thân lớp được định nghĩa là final thì nó không cho phép kế thừa.
Ví dụ 1: Ví dụ về phương thức final
<?php
class BaseClass {
public function test() {
echo "BaseClass::test() called\n";
}
final public function moreTesting() {
echo "BaseClass::moreTesting() called\n";
}
}
class ChildClass extends BaseClass {
public function moreTesting() {
echo "ChildClass::moreTesting() called\n";
}
}
// Kết quả là lỗi Fatal: Không thể ghi đè phương thức final BaseClass::moreTesting()
?>
Ví dụ 2: Ví dụ về lớp final
<?php
final class BaseClass {
public function test() {
echo "BaseClass::test() called\n";
}
// Bạn có thể khai báo phương thức trong lớp final là final hoặc không
final public function moreTesting() {
echo "BaseClass::moreTesting() called\n";
}
}
class ChildClass extends BaseClass {
}
// Kết quả là lỗi Fatal: Lớp ChildClass không thể thừa kế lớp final (BaseClass)
?>
Lưu ý: Thuộc tính không thể được khai báo là final, chỉ áp dụng được điều này cho lớp và phương thức.