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
  • 相关阅读:
    (2)javascript的基本语法、数据结构、变量
    (1)认识javascript
    CSS 浅析position:relative/absolute定位方式
    jquery实现下拉框多选
    Vue.js not detected
    手机代理调试Charles Proxy和Fiddler
    render函数之jsx应用
    vue组件通信方式(多种方案)
    点击页面空白处地方,隐藏弹窗
    css圆角不圆和1px方案
  • 原文地址:https://www.cnblogs.com/niuben/p/11216660.html
Copyright © 2011-2022 走看看