接口是对多重继承的一种变相实现, Traits可以被视为一种加强型的接口.

先来看如下代码

trait Hello
{private $name = 'chenqionghe';public function sayHello(){echo 'hello ';}
}
trait World
{public $age = '18';public function sayWorld(){echo 'world ! ';}
}
class HandsonBoy
{use Hello,World;public function say(){echo 'i am '.$this->name;}
}
$boy = new HandSonBoy();
$boy->sayHello();
$boy->sayWorld();
echo $boy->say();

上面代码的运行结果如下

这里的HandsonBoy同时实现了两个traits,从而使其可以分别调用两个Traits里的代码段.从代码就可以看出,traits和接口很像,不同的是traits是可以导入代码的接口.
从某种意义来说,traits和接口都是对"多重继承"的一种变相实现.

转载于:https://www.cnblogs.com/chenqionghe/p/4735742.html

PHP中的加强型接口Traits相关推荐

  1. java的标记接口_Java中的标记接口?

    我被教授,Java中的Marker接口是一个空接口,用于向编译器或JVM发送信号,实现此接口的类的对象必须以特殊方式处理,如序列化,克隆等. 但最近我了解到,它实际上与编译器或JVM无关.例如,在Se ...

  2. php 抽象类 接口 区别,PHP中抽象类、接口的区别与选择分析

    本文实例分析了PHP中抽象类.接口的区别与选择.分享给大家供大家参考,具体如下: 区别: 1.对接口的使用是通过关键字implements.对抽象类的使用是通过关键字extends.当然接口也可以通过 ...

  3. C#中抽象类和接口的区别

    一.抽象类:       抽象类是特殊的类,只是不能被实例化:除此以外,具有类的其他特性:重要的是抽象类可以包括抽象方法,这是普通类所不能的.抽象方法只能声明于抽象类中,且不包含任何实现,派生类必须覆 ...

  4. 使用mock解决测试中依赖第三方接口的问题

    使用mock解决测试中依赖第三方接口的问题 参考文章: (1)使用mock解决测试中依赖第三方接口的问题 (2)https://www.cnblogs.com/wbw-test/p/11977335. ...

  5. java中Collections的接口及类层次图

    1.Collection和Collections Collection和Collections是两个不两只的概念.Collection在Collection层次图中是根接口,而Collections是 ...

  6. C#中抽象类和接口的区别与使用

    一.抽象类: 抽象类是特殊的类,只是不能被实例化:除此以外,具有类的其他特性:重要的是抽象类可以包括抽象方法,这是普通类所不能的.抽象方法只能声明于抽象类中,且不包含任何实现,派生类必须覆盖它们.另外 ...

  7. Java中的某些接口为什么没有任何方法?

    java中,有些接口内部没有声明任何方法,也就是说,实现这些接口的类不需要重写任何方法. 这些没有任何方法声明的接口又被叫做标识接口.标识接口对实现它的类没有任何语义上的要求,仅仅充当标识的作用,用来 ...

  8. Spring中的BeanPostProcessor接口

    由方法名字也可以看出,前者在实例化及依赖注入完成后.在任何初始化代码(比如配置文件中的init-method)调用之前调用:后者在初始化代码调用之后调用. 注意: 1.接口中的两个方法都要将传入的be ...

  9. spring中基础核心接口总结

    spring中基础核心接口总结 理解这几个接口,及其实现类就可以快速了解spring,具体的用法参考其他spring资料 1.BeanFactory最基础最核心的接口 重要的实现类有: XmlBean ...

最新文章

  1. 【深度学习】深入浅出数字图像处理基础(模型训练的先修课)
  2. 15个最热门的GitHub库
  3. 原来这些行业的“潜规则”是这样的...
  4. STL 源码剖析 heap堆
  5. 多实例多进程网络编程PHP,php socket网络编程基础知识(四):多进程
  6. java gps 距离计算_Java教程之地图中计算两个GPS坐标点的距离
  7. Python基础班---第一部分(基础)---Python基础知识---计算机组成原理
  8. c语言中乱显示数字,同时显示不同的数字
  9. python画roc曲线需要什么数据,Python ROC曲线绘制
  10. linux快速cd多层目录,linux 下 cd - cd ~- 和多目录切换技巧(示例代码)
  11. 衡量神经网络的三个指标,参数量,multi-add,flop计算力
  12. 解决各种IE兼容问题
  13. 基于Php+MySql数据库架构的网络验证系统
  14. 卡西欧计算机怎么进制转换,casio计算器fx82es刷机实现十进制转其他进制的模式...
  15. 深蓝学院-视觉SLAM理论与实践-第十二期-第2章作业
  16. 全自动软化水设备:全自动软化水设备选型指南
  17. 函数(详解)——C语言
  18. 几个炫酷的3D旋转动态效果(附代码)
  19. 笔记本电脑没有WiFi选项,3个小时,我试了以下N种方法,终于出现网络了!
  20. 输出1至100的数字之和;

热门文章

  1. JSON学习笔记(三)- 数组
  2. Hbase总结(三)-Hbase与Hive的区别与联系
  3. 微服务架构下,解决数据一致性问题的实践 2
  4. node中的js-核心模块
  5. 文件名利用RLO技术欺骗(学习)
  6. SAP ABAP系统更改主机名
  7. 阿里云OSS增量上传脚本
  8. windows server如何加强云服务器的安全性
  9. linux ps top 命令 VSZ,RSS,TTY,STAT, VIRT,RES,SHR,DATA的含义
  10. CentOS 6.4 卸载与安装桌面