PHP是一个MVC类的语言思想,所以在控制层,可以把常用的代码进行类的整合,这样可以简化代码,在使用的时候直接使用 parent::关键字 来继承就好了,但是有些代码又不想要继承,或者某些方法不想被重写,哪就要用到 PHP 面向对象中 final类与final方法。,final -- 用于类、方法前。,final类 -- 不可被继承。,final方法 -- 不可被覆盖。,final类的不能被继承,如果我们不希望一个类被继承,我们使用final来修饰这个类。这个类将无法被继承。比如我们设定的Math类,涉及了我们要做的数学计算方法,这些算法也没有必要修改,也没有必要被继承,我们把它设置成final类型。,程序运行结果:,final方法不能被重写,如果不希望类中的某个方法被子类重写,我们可以设置这个方法为final方法,只需要在这个方法前加上final修饰符。,如果这个方法被子类重写,将会出现错误。,程序运行结果,

PHP是一个MVC类的语言思想,所以在控制层,可以把常用的代码进行类的整合,这样可以简化代码,在使用的时候直接使用 parent::关键字 来继承就好了,但是有些代码又不想要继承,或者某些方法不想被重写,哪就要用到 PHP 面向对象中 final类与final方法。

final -- 用于类、方法前。

final类 -- 不可被继承。

final方法 -- 不可被覆盖。

final类的不能被继承

如果我们不希望一个类被继承,我们使用final来修饰这个类。这个类将无法被继承。比如我们设定的Math类,涉及了我们要做的数学计算方法,这些算法也没有必要修改,也没有必要被继承,我们把它设置成final类型。

  1. //声明一个final类Math  
  2. final class Math{  
  3.       public static $pi = 3.14;  
  4.       public function __toString(){  
  5.           return "这是Math类。";  
  6.       }  
  7. }  
  8. $math = new Math();  
  9. echo $math;  
  10. //声明类SuperMath 继承自 Math类  
  11. class SuperMath extends Math {  
  12. }//xiariboke.net  
  13. //执行会出错,final类不能被继承。  
  14. ?>  

程序运行结果:

  1. Fatal error: Class SuperMath may not inherit from final class (Math) in E:\PHPProjects\test.php on line 14  

final方法不能被重写

如果不希望类中的某个方法被子类重写,我们可以设置这个方法为final方法,只需要在这个方法前加上final修饰符。

如果这个方法被子类重写,将会出现错误。

  1. //声明一个final类Math  
  2. class Math{  
  3.       public static $pi = 3.14;  
  4.       public function __toString(){  
  5.           return "这是Math类。";  
  6.       }  
  7.       public final function max($a,$b){  
  8.           return $a > $b ? $a : $b ;  
  9.       }  
  10. }  
  11. //声明类SuperMath 继承自 Math类  
  12. class SuperMath extends Math {  
  13.     public final function max($a,$b){}  
  14. }//xiariboke.net  
  15. //执行会出错,final方法不能被重写。  
  16. ?>  

程序运行结果

  1. Fatal error: Class SuperMath may not inherit from final class (Math) in E:\PHPProjects\test.php on line 16  

,

PHP是一个MVC类的语言思想,所以在控制层,可以把常用的代码进行类的整合,这样可以简化代码,在使用的时候直接使用 parent::关键字 来继承就好了,但是有些代码又不想要继承,或者某些方法不想被重写,哪就要用到 PHP 面向对象中 final类与final方法。

final -- 用于类、方法前。

final类 -- 不可被继承。

final方法 -- 不可被覆盖。

final类的不能被继承

如果我们不希望一个类被继承,我们使用final来修饰这个类。这个类将无法被继承。比如我们设定的Math类,涉及了我们要做的数学计算方法,这些算法也没有必要修改,也没有必要被继承,我们把它设置成final类型。

  1. //声明一个final类Math  
  2. final class Math{  
  3.       public static $pi = 3.14;  
  4.       public function __toString(){  
  5.           return "这是Math类。";  
  6.       }  
  7. }  
  8. $math = new Math();  
  9. echo $math;  
  10. //声明类SuperMath 继承自 Math类  
  11. class SuperMath extends Math {  
  12. }//xiariboke.net  
  13. //执行会出错,final类不能被继承。  
  14. ?>  

程序运行结果:

  1. Fatal error: Class SuperMath may not inherit from final class (Math) in E:\PHPProjects\test.php on line 14  

final方法不能被重写

如果不希望类中的某个方法被子类重写,我们可以设置这个方法为final方法,只需要在这个方法前加上final修饰符。

如果这个方法被子类重写,将会出现错误。

  1. //声明一个final类Math  
  2. class Math{  
  3.       public static $pi = 3.14;  
  4.       public function __toString(){  
  5.           return "这是Math类。";  
  6.       }  
  7.       public final function max($a,$b){  
  8.           return $a > $b ? $a : $b ;  
  9.       }  
  10. }  
  11. //声明类SuperMath 继承自 Math类  
  12. class SuperMath extends Math {  
  13.     public final function max($a,$b){}  
  14. }//xiariboke.net  
  15. //执行会出错,final方法不能被重写。  
  16. ?>  

程序运行结果

  1. Fatal error: Class SuperMath may not inherit from final class (Math) in E:\PHPProjects\test.php on line 16  
最后修改:2025 年 09 月 10 日
如果觉得我的文章对你有用,请随意夸赞