zoukankan      html  css  js  c++  java
  • PHP 面向对象 final类与final方法

    final---用于类、方法前。

    final类---不可被继承。

    final方法---不可被覆盖。

    如果我们不希望一个类被继承,我们使用final来修饰这个类。这个类将无法被继承。

    比如我们设定的Math类,涉及了我们要做的数学计算方法,这些算法也没有必要修改,也没有必要被继承,我们把它设置成final类型。

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

    程序运行结果 

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

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

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

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

    程序运行结果 

    Fatal error: Class SuperMath may not inherit from final class (Math) in E:PHPProjects	est.php on line 16
  • 相关阅读:
    php解析文本文件呈现在表格上
    nyoj 1058部分和问题
    nyoj 488素数环
    nyoj 82迷宫寻宝(一)
    nyoj58最少步数
    nyoj 325 zb的生日
    nyoj 20 吝啬的国度
    nyoj 349 Sorting It All Out
    nyoj 284
    PPT基础整理
  • 原文地址:https://www.cnblogs.com/xcc2016/p/5722517.html
Copyright © 2011-2022 走看看