OOP之接口技术的应用细节详解

<?php
/*接口:接口其实就是一种特殊的抽象类,而抽象类又是一种特殊的类;
    接口与抽象类相比有哪些不同:
    1.使用interface 关键字来定义接口,而不使用abstract class等词;
    2.接口中的方法必须全部是抽象方法,不能包含非抽象的方法;
        所以在接口中无须使用abstract来修饰抽象方法,使用的话会报错;
    3.接口中的成员属性必须全部为常量(不能包含变量);
    4.所有的权限必须是公有的(public);
   接口应用的一些细节:
   1.接口可以继承接口(但是只有扩展的关系,没有覆盖;)
   2.可以使用一个类来实现接口中的全部方法,也可以使用一个抽象类来实现接口中的部分方法;
   3.类与接口、抽象类与接口其中包含实现(覆盖重写)抽象方法的关系,所以就不能使用extends关键字
   (使用extends会报错),而是用implements来实现;
   4.extends子类在PHP中继承时只能有一个父类,而一个子类在继承一个类的同时可以继承多个接口(先继承后实现)
*/

  interface demo{
     const NAME="刘仁";
     const AGE=22;
     const SEX="男";
          
           function say();

           function eat();
  }
  //接口继承接口
  interface bibi{
      function run();
  }
    interface demo1 extends demo{
            function test();
    }
    //声明一个普通的类
    class hello{
        private $name;
        function word(){
            echo "Hello word<br>";
        }
    }
  //类来实现接口
  class demo2 implements demo1{
      function say(){
          echo "11111111111111<br>";
      }
      function eat(){
          echo "2222222222222<br>";
      }
      function test(){
          echo "testtesttesttest<br>";
      }
  }
  //抽象类来实现接口中的部分方法,此处用extends也会报错
  abstract class demo3 implements demo{
      
  }
  //继承一个类的同时可以继承多个接口,用","隔开;
  class demo4 extends hello implements demo,bibi{
      function say(){
          echo "实现demo接口的说话方法!<br>";
      }
      function eat(){
          echo "实现demo接口中的吃饭方法!<br>";
      }
      function run(){
          echo "实现bibi接口中的跑步方法!<br>";
      }
  }
  $obj= new demo4();
  $obj->say();
  $obj->eat();
  $obj->run();
  $obj->word();
?> 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值