当前位置: 首页 > 面试题库 >

特性与接口

微生翼
2023-03-14
问题内容

我最近一直在尝试研究PHP,但发现自己迷上了特质。我了解水平代码重用的概念,并且不想一定要从抽象类继承。我不明白的是:使用特征和接口之间的关键区别是什么?

我曾尝试搜索一篇不错的博客文章或文章,解释何时使用一种或另一种,但到目前为止,我发现的示例似乎是如此相似,以至于完全相同。


问题答案:

接口定义了实现类 必须 实现的一组方法。

当一个特征被使用时use,这些方法的实现也会随之而来-这在Interface。中不会发生。

那是最大的不同。

从PHP
RFC
的水平复用:

特性是一种在PHP等单一继承语言中重用代码的机制。特性旨在通过使开发人员能够在生活在不同类层次结构中的几个独立类中自由重用方法集,从而减少单一继承的某些限制。



 类似资料:
  • 本文向大家介绍Kotlin 接口与 Java8 新特性接口详解,包括了Kotlin 接口与 Java8 新特性接口详解的使用技巧和注意事项,需要的朋友参考一下 前言 在看一本关于高性能编程的时候发现 Java8 中关于接口的新特性的介绍,这个特性是真的棒,解决了一个接口中有多个方法,但并不想实现该接口的类都去实现所有的方法,简单的说就是在类需要的情况再去重写接口。所以有了以下的特性出现。 接口增强

  • 如果水印在指定的时间间隔内没有被更改(没有事件到达),运行时将不会发出任何水印?另一方面,如果在下一个间隔之前到达了新事件,则将立即发出新的水印,或者将其排队/等待,直到到达下一个setAutoWatermarkInterval间隔。 我很好奇AutoWatermarkInterval的最佳配置是什么(特别是对于高速率源):这个值越小,处理时间和事件时间之间的延迟就越小,但发送水印的带宽开销越大。

  • 和类: 和特性: 但是当我运行我的代码时,我得到了这个错误:

  • 我正试图扩展一种特质。我的意思是创建一个特性,为不同的特性重新定义几个方法。 这是我的代码(PHP5.6和Laravel 5.4): 当我在一个模型中使用时,问题就出现了,它与冲突,因为具有。在PHP7之前,如果您尝试两次定义同一属性,traits会抛出一个致命错误。因此,由于我在中定义了,并通过借助再次定义了,因此它就中断了。 简言之: 有没有办法说服PHP,它真的是同样的事情,它可以停止与自己

  • 我对Koltin lambdas有点困惑,我想知道如何使用它,给出以下代码片段: 以及需要将该接口作为参数传递的函数: 但是,相同的逻辑,但在Java中,按预期编译和运行。 和 在这种情况下,如何在静态编程语言中使用lambda?

  • Spring Cloud专注于提供良好的开箱即用经验的典型用例和可扩展性机制覆盖。 分布式/版本化配置 服务注册和发现 路由 service - to - service调用 负载均衡 断路器 分布式消息传递