PHP final关键字的2种用法(附带实例)
从 PHP 5 开始,新增了一个 final 关键字:
【实例】final方法不能被重写。

图 1 程序运行结果
【实例】final类不能被继承。

图 2 报错信息
- 如果父类中的方法被声明为 final,则子类无法覆盖该方法;
- 如果一个类被声明为 final,则不能被继承。
final方法不能被重写
如果希望类中的某个方法不能被子类重写,就可以设置该方法为 final 方法,只需要在方法前加上 final 修饰符即可。如果这个方法被子类重写,将会出现错误。【实例】final方法不能被重写。
<?php
class Math{ // 定义类 Math
// 计算两个数值的和
public final function Sum($a,$b) {
return $a+$b;
}
}
class M extends Math { // M 继承 Math 类
public function Sum($a,$b) { // 重写 Sum 方法
echo '这里先测试一下';
}
}
$math = new M();
echo $math->Sum(10,20);
?>
运行结果如下图所示。不难看出,final方法不能被重写,否则会报错。
图 1 程序运行结果
final类不能被继承
final 关键词可以终止类的继承。final 类不能有子类,final 方法不能被覆盖。【实例】final类不能被继承。
<?php
final class Poth{
public $aa = 9.99;
}
$poth = new Poth();
echo $poth;
//声明M类,它继承自Poth类,但执行时会出错,final类不能被继承
class M extends Poth {
}
?>
运行结果如下图所示:
图 2 报错信息
ICP备案:
公安联网备案: