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
  • 相关阅读:
    (转 )Unity对Lua的编辑器拓展
    unity timeline
    unity拖尾粒子问题
    unity shader 波动圈
    linux教程
    Unity Shader 基础
    ugui拖拽
    unity shader 热扭曲 (屏幕后处理)
    英文取名神器
    lua正则表达式替换字符串
  • 原文地址:https://www.cnblogs.com/xcc2016/p/5722517.html
Copyright © 2011-2022 走看看