Interfaces允许您创建定义实现它的类的方法的代码.但是,您不能向这些方法添加任何代码.

Abstract classes允许您做同样的事情,同时向方法中添加代码.

现在,如果你能用抽象类实现同样的目标,为什么我们甚至需要接口的概念呢?

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

推荐答案

接口的全部意义在于使您可以灵活地强制您的类实现多个接口,但仍然不允许多个继承.从多个类继承的问题很多,而且多种多样,上面的wikipedia页很好地总结了这些问题.

接口是一种折衷方案.多重继承的大多数问题不适用于抽象基类,因此现在大多数现代语言禁用多重继承,但仍调用抽象基类接口,并允许类根据需要"实现"任意多个接口.

Php相关问答推荐

管理员订单列表中的自定义列与WooCommerce 8.6.1一起消失

使用PHP阅读XML提要

闭包绑定$This和垃圾收集器

Sylius php -如何将购物车传递到小枝模板(Sylius模板事件)

添加并显示单价字段到WooCommerce产品变化

当配置的URL为空时禁用Laravel Slack日志(log)记录

PHP根据特定索引值从中删除子数组

如何在汇总表构建器中操作LALAVEL细丝Sum::Make()值

哪里的表现能更好?

函数存储到变量中

Laravel处理belongToMany和额外字段

添加不存在的订单元数据以扩展WooCommerce针对特定产品的管理订单搜索

Shopware 6 插件:如何删除/迁移布尔配置到多选配置

使用 Spomky Labs JWT 框架中的 verifyWithKey 验证 id_token JWT 的签名需要 30 秒以上

PHP Symfony 在测试.env文件中将接口自动装配作为构造函数参数,但使用接口的特定类

PHP使用三元运算符进行null合并(再次)

PHP:如何将多列sql查询结果转换成数组

Laravel auth()->id() 在生产服务器中不工作

htaccess php 文件,然后是文件夹

从 CSV 文件 seeder 数据库时的额外行