Blogger Information
Blog 28
fans 0
comment 0
visits 21927
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
php接口和trait使用场景
暝皑祯π_π
Original
864 people have browsed it

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

  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.类和接口是不同的:类里是有程序实现的;而接口无程序实现,只可以预定义方法
Correcting teacher:天蓬老师天蓬老师

Correction status:qualified

Teacher's comments:是不是被这些术语搞伤了, 其实本质上还是类, 只是应用场合不同罢了
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post