为了账号安全,请及时绑定邮箱和手机立即绑定

PHP中的接口有什么意义?

PHP中的接口有什么意义?

繁星coding 2019-08-24 15:35:44
PHP中的接口有什么意义?接口允许您创建代码,该代码定义实现它的类的方法。但是,您无法向这些方法添加任何代码。抽象类允许您执行相同的操作,同时向方法添加代码。现在,如果您可以使用抽象类实现相同的目标,为什么我们甚至需要接口的概念?我被告知它与OO理论有关,从C ++到Java,这就是PHP的OO基础。这个概念在Java中有用但在PHP中没有用吗?它只是一种避免在抽象类中乱丢占位符的方法吗?我错过了什么吗?
查看完整描述

3 回答

?
RISEBY

TA贡献1856条经验 获得超5个赞

我不了解其他语言,接口的概念是什么。但是对于PHP,我会尽力解释它。请耐心等待,如果有帮助,请评论。

接口用作“契约”,指定一组子类的作用,但不指定它们是如何做的。

规则

  1. 接口无法实例化。

  2. 您不能在接口中实现任何方法,即它只包含方法的.signature而不包含详细信息(正文)。

  3. 接口可以包含方法和/或常量,但不包含任何属性。接口常量与类常量具有相同的限制。接口方法是隐式抽象的。

  4. 接口不能声明构造函数或析构函数,因为这些是类级别的实现细节。

  5. 界面中的所有方法都必须具有公共可见性。

现在让我们举个例子。假设我们有两个玩具:一个是狗,另一个是猫。

正如我们所知,狗吠和猫喵。这两种方法有相同的说法,但具有不同的功能或实施方式。假设我们给用户一个带有发言按钮的遥控器。

当用户按下发言按钮时,玩具必须说出来并不重要,无论是狗还是猫。

这是一个使用接口的好例子,而不是抽象类,因为实现是不同的。为什么?记得

如果需要通过添加一些非抽象方法来支持子类,则应使用抽象类。否则,接口将是您的选择。


查看完整回答
反对 回复 2019-08-24
  • TVBK
    TVBK
    接口我也是一直搞不明白。。根据你的说法,我这样理解对吗? 小G负责写 狗class,小M负责写猫class 现在新增一个功能 我按按钮它就叫。不论是 狗class 还是 猫class 都得继承我这个专门负责叫的 接口 。 那接口是不是 这样设计: // 动物叫接口 interface animalsCall { public function call(); } // 接口出来了 然后 小G 就开始负责在 狗class 里面写 狗的叫声 继承动物叫接口 class Dog implements animalsCall { // 小狗看门。。。等 其他功能 public function porter(){} // 这是所有动物都必须会的一招 继承了animalsCall接口 所以强制必须实现里面的方法call。 public function call(){} } // 接口出来了 然后 小M 也同时开工开始负责在 猫class 里面写 猫的叫声 同样继承 动物叫接口 class Cat implements animalsCall { // 小猫卖萌。。。等 其他功能 public function acting_cute(){} // 同样的这是所有动物都必须会的一招 继承了animalsCall接口 所以强制必须实现里面的方法call。 public function call(){} } // 然后 现在 有个功能 是点击按钮 就叫 function call(string $type){ if($type == Dog){ new Dog()->call(); }elseif($type == 'cat'){ new Cat()->call(); } } 这样理解对吗? 如果这样理解的话: 1. 接口只是为了统一方法名?调用起来不会 左一个dogCall 右一个catCall? 2. 作用同1。。。 实在想不出这样还有其他好处没-.-! 还请大佬稍微指点下 (づ ̄3 ̄)づ╭❤~
?
森林海

TA贡献2011条经验 获得超2个赞

接口就像你的基因。

抽象类就像你的父母一样。

它们的目的是遗传的,但在抽象类和接口的情况下,继承的内容更具体


查看完整回答
反对 回复 2019-08-24
  • 3 回答
  • 0 关注
  • 1452 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信