专注于 JetBrains IDEA 全家桶,永久激活,教程
持续更新 PyCharm,IDEA,WebStorm,PhpStorm,DataGrip,RubyMine,CLion,AppCode 永久激活教程

php接口和多态的概念以及简单应用

  接口是面向对象中的一个重要特性,也是面向对象开发不可缺少的一个概念,下面简单说一下接口的概念,先看一段简单的代码:

 interface ICanEat {
    public function eat($food);
 }

 //Human类实现了ICanEat接口
 class Human implements ICanEat { 
   public function eat($food){
     echo "Human eating " . $food . "<br />";
   }
 }

 // Animal类也实现了ICanEat接口
 class Animal implements ICanEat {
   public function eat($food){
     echo "Animal eating " . $food . "\n";
   }
 }

 // 不同的类可以实现同一个接口,定义接口方法的不同实现
 $man = new Human();
 $man->eat("Apple");
 $monkey = new Animal();
 $monkey->eat("Banana");

 // 实现了某个接口的类必须提供接口中定义的方法

 // 不能用接口创建对象,但是能够判断某个对象是否实现了某个接口
 //$eatObj = new ICanEat();
 ($man instanceof ICanEat); // 判断某个对象是否实现了某个接口

 function checkEat($obj){
   //定义方法判断对象是否实现某个接口
   if($obj instanceof ICanEat){
     $obj->eat('Apple');
   }else{
     echo "The Cant't eat";
   }
 }

 checkEat($man);
 checkEat($monkey);

 // 接口可以继承接口
 interface ICanDrink extends ICanEat {
   public function drink();
 }

 class Human1 implements ICanDrink{
   public function pee(){}
   public function eat($food){}
 }

代码比较乱,重点就是那么一点,首先我们定义一个接口ICanEat,定义的语句是interface ICanEat{},里面可以定义一些方法,这些方法必须是public公有的类型,并且这个方法不用具体的实现,接下来定义了两个类Human和Animal,都实现了ICanEat这个接口,就是都能吃东西,只不过具体吃的方法不太一样,这就是接口的意义所在,即定义一些通用的方法好多类都同时实现这些方法,但是实现的方法不一样,接口的作用就在于此,要注意,接口中定义的所有方法,实现接口的类中必须全部实现,不能实现其中几个,只能全部实现,checkEat方法是判断某个对象是否实现了一个接口。

另外不能用接口创建对象,或者说这种说法是错误的,只能说类实现了接口,对象实现了接口,这是个实现的关系

接口是可以继承接口的,比如ICanDrink可以喝,虽然不是太合适,语句是:interface ICanDrink extends ICanEat{}这里面定义了方法drink,这样就实现了接口的继承

然后定义了类Human1实现了ICanDrink接口,那么这个类必须实现ICanDrink接口以及父接口ICanEat中的所有方法,就是说实现接口必须实现接口中的所有方法以及父接口所有的方法

总之,最核心的地方就是理解接口的作用和意义,它是提供了一些统一的方法去描述不同对象,不同对象都有其具体实现,基本就是这些东西。

至于多态呢,到这里就自然明白了,只要对象实现了某个接口,就直接可以通过对象调用接口的所有方法,接口实现的类方法有很多,这种现象就称为多态,相同的代码传入的对象不一样,所以具体实现方式也不一样,这就是多态的真正含义。

文章永久链接:https://tech.souyunku.com/47740

未经允许不得转载:搜云库技术团队 » php接口和多态的概念以及简单应用

JetBrains 全家桶,激活、破解、教程

提供 JetBrains 全家桶激活码、注册码、破解补丁下载及详细激活教程,支持 IntelliJ IDEA、PyCharm、WebStorm 等工具的永久激活。无论是破解教程,还是最新激活码,均可免费获得,帮助开发者解决常见激活问题,确保轻松破解并快速使用 JetBrains 软件。获取免费的破解补丁和激活码,快速解决激活难题,全面覆盖 2024/2025 版本!

联系我们联系我们