首页 > 编程笔记 > PHP笔记 阅读:13

PHP final关键字的2种用法(附带实例)

从 PHP 5 开始,新增了一个 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 报错信息

相关文章