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

    原文:https://blog.csdn.net/qq_41037819/article/details/80715785

  • 相关阅读:
    Ubuntu 13.04 配置Cocos2d-x记录
    Ubuntu系列Crontab日记记录
    只是为了拾起一只笔,所以写了这些
    XhProf安装教程–详细教程
    检查.gitignore语法
    JavaScript设置右下角悬浮窗
    Codeforces Round #428 (Div. 2) B
    2017 多校5 hdu 6093 Rikka with Number
    cf 834 E. Ever-Hungry Krakozyabra
    codeforces 834 D. The Bakery
  • 原文地址:https://www.cnblogs.com/showcase/p/11606203.html
Copyright © 2011-2022 走看看