美文网首页
php继承与实现的比较-final、const修饰符说明

php继承与实现的比较-final、const修饰符说明

作者: zhanglizzy | 来源:发表于2017-03-27 11:37 被阅读109次

    一、继承和实现接口的比较:
    (1)php继承属于单继承,保证了单一性,但不够灵活。实现接口是对单一继承的补充;
    (2)实现接口可以在不破坏类层级关系的前提下,对某个类功能扩展。

    <?php
    
      class Monkey {
    
          public $age;
          public $name;
    
          public function climbing() {
              echo "猴子会爬树<br/>";
          }
      }
    
      interface iBirdable {
          public function fly();
      }
    
      interface iFishable {
          public function swimming();
      }
    
      class LittleMonkey extends Monkey implements iBirdable,iFishable {
          public function fly() {
              echo "猴子还会飞<br/>";
          }
          public function swimming() {
              echo "猴子也会游泳<br/>";
          }
      }
    
      $littleMonkey = new LittleMonkey();
      $littleMonkey -> climbing();
      $littleMonkey -> fly();
      $littleMonkey -> swimming();
    ?>
    

    二、final关键字:
    1、如果某个类不想被其他的类继承(从安全角度考虑的话),可用final修饰;
    2、如果希望某个方法不能被子类改写(不希望该方法被子类方法重载),也可以用final修饰。

    <?php  
    class A{  
        final public function getRate($salary){  
            return $salary*0.08;  
        }  
    }  
    class B extends A{  
        //不能去覆盖父类的getRate方法.  
        /*public function getRate($sal){ 
            return $sal*0.01; 
        }*/  
    }  
            
    $b=new B();  
    echo $b->getRate(100)."<br/>";  
    ?>  
    

    3、final不能修饰成员变量(属性)。

    三、const:
    1、当一个属性不希望被修改,可以考虑用const做成常量,如圆周率不能被篡改。
    2、基本语法:
    const 常量名 = 赋初值;
    如果不赋初值,后面不可篡改就不能有值了。
    3、常量不能写修饰符,默认public但不能写出来。
    4、常量名一般全部用大写字母命名。
    5、调用语法:
    在类的内部使用:
    self::常量的名称 或 类名::常量名;
    在类的外部使用:
    接口名::常量;

    相关文章

      网友评论

          本文标题:php继承与实现的比较-final、const修饰符说明

          本文链接:https://www.haomeiwen.com/subject/ihhkottx.html