zoukankan      html  css  js  c++  java
  • PHP 面向对象 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 16

    如果不希望类中的某个方法被子类重写,我们可以设置这个方法为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
  • 相关阅读:
    SQLAlchemy Table(表)类方式
    MySQL简单入门
    第四次作业
    第三次随笔
    第二次随笔
    第一次随笔
    第四次随笔
    第三次作业
    第二次随笔
    第一次随笔
  • 原文地址:https://www.cnblogs.com/niuben/p/11216660.html
Copyright © 2011-2022 走看看