博客列表 >php接口和trait使用场景

php接口和trait使用场景

暝皑祯π_π
暝皑祯π_π原创
2020年05月05日 13:33:23866浏览

利用抽象类实现接口中一种方法

  1. <?php
  2. // 接口关键字:interface
  3. interface ischool
  4. {
  5. const NAMES ='湖畔大学';
  6. const PRINCIPAL ='马云';
  7. const STUDENT1 ='柳传志';
  8. const STUDENT2 ='冯仑';
  9. public static function names();
  10. public static function principal();
  11. public static function student1();
  12. public static function student2();
  13. }
  14. // 利用抽象类实现接口中一种方法
  15. abstract class Dd implements ischool
  16. {
  17. public static function names()
  18. {
  19. return ischool::NAMES;
  20. }
  21. }
  22. // 利用工作类实现剩下的方法
  23. class Db extends Dd
  24. {
  25. public static function principal()
  26. {
  27. return ischool::PRINCIPAL;
  28. }
  29. public static function student1()
  30. {
  31. return ischool::STUDENT1;
  32. }
  33. public static function student2()
  34. {
  35. return ischool::STUDENT2;
  36. }
  37. }
  38. echo(new Db)::PRINCIPAL;
  39. echo '<hr>';
  40. echo(new Db)::STUDENT1;
  41. echo '<hr>';
  42. echo(new Db)::STUDENT2;
  43. echo '<hr>';

接口多继承

  1. // 接口多继承
  2. interface Da
  3. {
  4. const NAME = '王老师';
  5. }
  6. interface Df
  7. {
  8. const SUBJECT = '语文';
  9. }
  10. interface Dc
  11. {
  12. const TIME = '上午';
  13. public function pec();
  14. }
  15. class iDj implements Da , Df , Dc
  16. {
  17. public function pec()
  18. {
  19. return Da::NAME . '教的科目是' . Df::SUBJECT . '时间是' . Dc::TIME;
  20. }
  21. }
  22. echo (new iDj)->pec();

trait

  1. // trait:与抽象类,接口一样不能实例化, 只能嵌入到宿主类中使用
  2. // trait成员:常规成员,静态成员,抽象成员,不能使用类常量
  3. // trait功能:代码复用
  4. trait tOne
  5. {
  6. public $doc = 12;
  7. public static $nmu = 15;
  8. abstract public function lop();
  9. }
  10. class Li
  11. {
  12. // 关键字:use
  13. use tOne; //加载trait tOne,在其他类中也可以加载这个trait,实现代码复用
  14. public function lop()
  15. {
  16. return $this->doc;
  17. }
  18. }
  19. echo (new Li)->lop();

总结

  • 1.接口的成员只能是“抽象方法”和“常量”
  • 2.接口间接实现了多继承
  • 3.接口实现了多态
  • 4.接口本质上就是类的模板
  • 5.trait的基本功能,代码复用
  • 6.类和接口是不同的:类里是有程序实现的;而接口无程序实现,只可以预定义方法
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议