• 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
  • 相关阅读:
    ios中解析json对象基类
    iOS archive(归档)的总结
    ios block一定会犯的几个错误
    iOS求职之C语言面试题
    iOS求职之OC面试题
    iOS开发之17个常用代码整理
    91平台iOS接入demo
    IOS 启动画面和图标设置(适配IOS7 and Xcode5)
    iOS - 切换图片/clip subview/iCarousel
    jemter多种方式查看结果树及正则的使用
  • 原文地址:https://www.cnblogs.com/zuochuang/p/7217706.html
Copyright © 2020-2023  润新知