• php中抽象类和接口的概念和区别


    //抽象类的定义:
    abstract class AAA{  //定义一个抽象类
      abstract function bb();
      ......
    }
    
    class cc extends AAA{
      //实现抽象类的方法
      function bb(){
        echo '111111111111';
      }
    }
    
    //使用方法
    
    $aa=new cc;
    $aa->kx();
    
    //1.定义一些方法,子类必须完全实现这个抽象中所有的方法
    //2.不能从抽象类创建对象,它的意义在于被扩展
    //3.抽象类通常具有抽象方法,方法中没有大括号
    //4.抽象方法不必实现具体的功能,由子类来完成
    //5.在子类实现抽象类的方法时,其子类的可见性必须大于或等于抽象方法的定义
    //6.抽象类的方法可以有参数,也可以为空
    //7.如果抽象方法有参数,那么子类的实现也必须有相同的参数个数
    
    
    
    
    
    //////////////////////////////接口类的定义:
    interface Shop{
          public   function buy($gid);
          public   function sell($gid);
          abstract function view($gid);
    }
    //如果要使用接口,必须定义接口类中的所以方法少一个都不可以(abstract除外)。
    //这样如果在一个大项目中不管别人怎么去做下面的方法,但是他必须实现本接口中的所有方法才可以!
    
    
    //例:实现上面的接口的一种方法
    class BaseShop implements Shop{
       public function buy($gid){
          echo '你购买了ID为 :' . $gid . '的商品';
       }
       public function sell($gid){
          echo '你购卖ID为 :' . $gid . '的商品';
       }
       public function view($gid){
          echo '你浏览了ID为 :' . $gid . '的商品';
       }
    }
    
    
    //接口的多重继承示例:
    <?php
    interface staff_i1{ //接口1
      function setID();
      function getID();
    }
    
    interface staff_i2{ //接口2
      function setName();
      function getName();
    }
    
    class staff implements staff_i1,staff_i2{
      private $id;
      private $name;
      function setID($id){
        $this->id = $id;
      }
    
      function getID(){
        return $this->id;
      }
    
      function setName($name){
        $this->name = $name;
      }
    
      function getName(){
        return $this->name;
      }
    
      function otherFunc(){ //这是一个接口中不存在的方法
        echo “Test”;
      }
    }
    ?>
  • 相关阅读:
    HttpContext.GetOwinContext().Authentication 报错 解决办法
    owin Claims-based认证登录实现
    angularjs初识ng-app、ng-model、ng-repeat指令
    SpringBoot配置slf4j logback-spring.xml日志
    idea时间注释模版
    oracel截取字符串
    win10官网下载地址
    使用HttpWebRequest实现basic身份认证
    mybatis常用jdbcType数据类型与mysql的类型对照
    修改IntelliJ IDEA 默认配置路径
  • 原文地址:https://www.cnblogs.com/wangjiafang/p/2847298.html
Copyright © 2020-2023  润新知