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

PHP中的接口有什么意义?

/ 猿问

PHP中的接口有什么意义?

繁星coding 2019-08-24 15:35:44

PHP中的接口有什么意义?

接口允许您创建代码,该代码定义实现它的类的方法。但是,您无法向这些方法添加任何代码。

抽象类允许您执行相同的操作,同时向方法添加代码。

现在,如果您可以使用抽象类实现相同的目标,为什么我们甚至需要接口的概念?

我被告知它与OO理论有关,从C ++到Java,这就是PHP的OO基础。这个概念在Java中有用但在PHP中没有用吗?它只是一种避免在抽象类中乱丢占位符的方法吗?我错过了什么吗?


查看完整描述

3 回答

?
弑天下

接口的整个要点是让您可以灵活地让您的类实现多个接口,但仍然不允许多重继承。从多个类继承的问题是多种多样的,其上的维基百科页面总结得很好。

接口是妥协。多重继承的大多数问题都不适用于抽象基类,因此现在大多数现代语言都禁用多重继承,但是调用抽象基类接口并允许类根据需要“实现”多个。


查看完整回答
反对 回复 2019-08-24
?
RISEBY

我不了解其他语言,接口的概念是什么。但是对于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 ̄)づ╭❤~
  • TVBK
    TVBK
    我去 空格回车被去除了 mmp 得麻烦大佬费电神了-.-
?
慕粉4167745

接口就像你的基因。

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

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


查看完整回答
反对 回复 2019-08-24

添加回答

回复

举报

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