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

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

    代码如下:

    <?
    //声明一个final类Math
    final class Math{
    public static $pi = 3.14;

    public function __toString(){
    return "这是Math类。";
    }
    }
    $math = new Math();
    echo $math;

    //声明类SuperMath 继承自 Math类
    class SuperMath extends Math {
    }
    //执行会出错,final类不能被继承。

    ?>


    程序运行结果

    代码如下:
    Fatal error: Class SuperMath may not inherit from final class (Math) in E:PHPProjects est.php on line 14



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

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

    代码如下:

    <?
    //声明一个final类Math
    class Math{
    public static $pi = 3.14;
    public function __toString(){
    return "这是Math类。";
    }
    public final function max($a,$b){
    return $a > $b ? $a : $b ;
    }
    }
    //声明类SuperMath 继承自 Math类
    class SuperMath extends Math {
    public final function max($a,$b){}
    }
    //执行会出错,final方法不能被重写。

    ?>



    程序运行结果

     代码如下:
    Fatal error: Class SuperMath may not inherit from final class (Math) in E:PHPProjects est.php on line 16
  • 相关阅读:
    Linux命令——find
    Linux命令——locate
    python模块:datetime
    python模块:json
    python模块:shelve
    python模块:shutil
    python模块:sys
    python:OS模块
    str.index()与str.find()比较
    python模块:re
  • 原文地址:https://www.cnblogs.com/zuochuang/p/7217706.html
Copyright © 2011-2022 走看看