在PHP类的实例方法的定义中使用final关键字可防止子类重写它。同样,如果在类本身的定义中使用final,则无法扩展此类。
final class myclass {}
class myclass{
final method mymethod(){}
}在下面的示例中,尝试覆盖最终方法将导致错误
<?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();
?>输出结果
输出显示以下错误消息
PHP Fatal error: Cannot override final method parentclass::test() in line 16
类似地,不能从此类继承最终类,如以下示例所示
<?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();
?>输出结果
输出显示以下错误消息
PHP Fatal error: Class childclass may not inherit from final class (parentclass) in line 16