zoukankan      html  css  js  c++  java
  • 浅析php中抽象类和接口的概念以及区别[转]

    //抽象类的定义:
    abstract class ku{  //定义一个抽象类
      abstract function kx();
      ......
    }
    function aa extends ku{
      //实现抽象类的方法
      function kx(){
        echo 'sdsf';
      }
    }
    //使用方法
    $aa=new aa;
    $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”;
      }
    }
    ?>
    

      他们的不同点:
    1。抽象类中可以有非抽象的方法而接口中只能够有抽象的方法!
    2。一个类可以继承多个接口,而一个类只能继承一个抽象类!
    3。接口的使用方式通过implements关键字进行,抽象类则是通过继承extends关键字进行!

  • 相关阅读:
    linux学习笔记28--监控命令vmstat,iostat, lsof
    linux学习笔记27--监控命令ps和top,free
    linux学习笔记26--命令wc
    linux学习笔记24---命令grep
    linux学习笔记23--时间命令date和cal
    linux学习笔记22---命令diff和diff3
    linux学习笔记22--命令ln
    Fiddler 抓取 ios 端数据包
    fiddler 清除证书+重新添加证书
    Fiddler 详尽教程与抓取移动端数据包
  • 原文地址:https://www.cnblogs.com/perseverancevictory/p/4246820.html
Copyright © 2011-2022 走看看