php抽象接口详解

在面向对象编程中有很多地方会用到接口,那么接口是什么。我个人理解接口就是一个协议,一个我们如果使用了某个东西,就得去遵守的协议。但是这个协议只是要求你做某个事情,不管你怎么做,也就是说必须得实现它的方法,至于怎么实现你自己做。这里如果直接讲接口得语法,感觉没有多大意义所以 我就从实现以及思想的变化开始分析。
抽象类:

abstract class Abs { abstract protected function getName(); }class MyClass extends Abs{ public function getName() { } }

接口类以abstract 开头修饰定义,可定义类属性,但是不能是抽象,其内部方法以abstract修饰则是抽象方法不需要加{}直接以‘;’结尾,方法可加参数可默认,继承抽象类的类必须要要实现其抽象的方法,且参数类型和数量得一致,访问控制修饰符必须要大于或等于其抽象方法定义得控制修饰。
接口:
interface inter {public function getName(); }class MyInter implements inter {public function getName() {} }

对于接口来说就相对更加纯粹,就是定义了一个接口,所有的方法都得对外公开不在像抽象类一样可能还存在自己得私有方法,也不能定义属性,实现接口就必须的按照其标准来实现接口。
基础语法上面就简单的介绍了一些,下面我就来仔细说下在实际开发中其具体作用,
我们想到创造一个外星人撩妹想法,但是我们肯定做不出来的吗,emmm比较技术不行,好吧 叫别人做。嘟嘟嘟!有人接单,好了他们开始生产。
class Alien{private $language; function __construct($language) { $this->language = $language; }public function say() { echo $this->language; } }$alien = new Alien("说汉语"); $alien->say();

很快厂家还很人性化得做了多语言支持,一下子就功能很强大,我们就拿去撩妹。撩妹开始:
妹:hi boy;
外星人:hi;
外星人:girl;
外星人:can;
…..
然后我们发现这东西并没有什么用,一次只能说一个单词并不能很顺利的把妹,妹子都无聊的走了,好吧!我们申请厂家重做要求说话流利。然而厂家并不会。蛋疼,我们只能叫另外一个厂家做,好了人家接单了。
class Alien {private $language = ""; public function speak($speed) { echo $language."语速".$speed; } } $alien = new Alien("汉语"); $alien->speak(2);

嘟嘟!好了 一个多语言说话且流利的外星人出来了,捣鼓了一下,发现开关并不是原来的那种换了,不管了开始撩妹;
妹:你好;
外星人:你好;
妹:你怎么这么可爱啊,
外星人:我不可爱,谢谢;
妹:。。。。
还没有开始撩就失败了因为这个外星人不幽默,我们重复上面的想法继续吧,然后n年过来。。。。。还是没有撩到妹,因为他们制造的外星人是这样的。
class Alien { private $language = "英语"; public function setLanguage($language) { $this->language = $language; } public function say($speed) { echo $language."语速:".$speed; } } $alien = new Alien();

这样的。
class Alien { private $language = "英语"; private $speed = 1;public function setLanguage($language) { $this->language = $language; }public setSpeed($speed) { $this->speed = $speed; }public function say() { echo $language."语速:".$speed; } } $alien = new Alien();

好吧 我们不谈论谁做的好不好,光是这么多外星人怎么用我们都已经晕了,哪有心思去把妹,这样下去注孤生。怎么办哦,而且这样下去还可能出现各种各样的外星人,肯定是不行的,你要说靠我自己,靠自己是不可能的这辈子都不可能靠自己撩妹。好吧绞尽脑汁,我觉得设计一个模型给厂家让他们按照我的模型来做,
嘟嘟!;
interface AlienModel {public function say(); }

好了 什么都不要跟我说,我就只要这么一个功能这样用,就这样了交给厂家了。
然后厂家就做出来各种各样的,就拿一种:
class Alien {private $language = "汉语"; private $speed = 1; public function setLanguage($type){ switch ($type) { case 1: $this->language = "汉语"; break; default: $this->language = "英语"; break; } }public function say() { echo $this->language."语速:".$speed; }public function setSpeed($speed) { $this->speed = $speed; } }

【php抽象接口详解】这样 我不管那么多 我就直接按一个开关就要开始说话。撩妹,这样的话 我不管怎么样 我就按一下一样的键位就能用,其他的就属于厂家的调控了,这样我就更加撩妹研究了,
以上是从代码的角度来说明对于接口的定义和实际作用有很多种说法,本人较菜只能说这么多。
https://www.zhihu.com/question/20111251/answer/99145627,可以参考这种的

    推荐阅读