示例运行截图

1、测试Demo代码

  1. require 'Loader.php';
  2. //"Person(人类)抽象类作父类,Teacher(老师)类, Student(学生)类为子类";
  3. //"老师类, 学生类,通过继承父类,都有通用属性name、age,和show()方法";
  4. //"------老师类通过实现iTalk接口,拥有talk()说英文,这个独有方法";
  5. //"------学生类通过实现iPlay接口,拥有playGame()玩游戏,这个独有方法";
  6. //"------老师类通过使用use trait T2,拥有skill(),独有新技能";
  7. //"------学生类通过使用use trait T1,拥有skill(),独有新技能";
  8. $tec = new Teacher("刘德华", 55);
  9. $stu = new Student("贾玲", 30);
  10. echo "------老师类,例程演示结果-----------------------------", "<br>";
  11. $tec->show();
  12. $tec->talk();
  13. $tec->skill();
  14. echo "------学生类,例程演示结果-----------------------------", "<br>";
  15. $stu->show();
  16. $stu->playGame();
  17. $stu->skill();

2、Person父类(抽象类)代码

  1. //人类,抽象类
  2. abstract class Person {
  3. // 类成员: 属性, 方法
  4. // 属性: 变量
  5. protected $name;
  6. protected $age;
  7. // 构造方法
  8. public function __construct($name, $age)
  9. {
  10. $this->name = $name;
  11. $this->age = $age;
  12. }
  13. // 抽象方法
  14. abstract public function show();
  15. }

3、Teacher类代码

  1. require "Loader.php";
  2. class Teacher extends Person implements iTalk {
  3. // 类成员: 属性, 方法
  4. // 属性: 变量, 构造方法, 继承父类的
  5. //学生类,老师类都有的show()方法
  6. public function show()
  7. {
  8. echo "我是一名老师,我叫{$this->name},我已经{$this->age}岁了...", "<br>";
  9. }
  10. //重写接口iTalk,talk()方法,是老师类特有方法
  11. public function talk()
  12. {
  13. echo "我可以用". Teacher::LANGUAGE . "进行流利沟通...", "<br>";
  14. }
  15. //use trait T2,让老师类新方法skill(),打印“8级证书...”
  16. use T2;
  17. }
  18. trait T2
  19. {
  20. public function skill()
  21. {
  22. echo "我已经拥有国家钢琴等级,专业8级证书...", "<br>";
  23. }
  24. }

4、Student类代码

  1. require 'Loader.php';
  2. class Student extends Person implements iPlay {
  3. // 类成员: 属性, 方法
  4. // 属性: 变量, 构造方法, 继承父类的
  5. //学生类,老师类都有的show()方法
  6. public function show()
  7. {
  8. echo "我是一名学生,我叫{$this->name},我已经{$this->age}岁了...", "<br>";
  9. }
  10. //重写接口iPlay,playGame()方法,是学生类特有方法
  11. public function playGame()
  12. {
  13. echo "我玩". Student::GAME . "游戏,很厉害的...", "<br>";
  14. }
  15. //use trait T1,让学生类有新方法skill(),打印“跆拳道...”
  16. use T1;
  17. }
  18. trait T1
  19. {
  20. public function skill()
  21. {
  22. echo "我的刚学的技能是:跆拳道...", "<br>";
  23. }
  24. }

5、iTalk接口代码

  1. interface iTalk {
  2. const LANGUAGE = "英语";
  3. public function talk();
  4. }

6、iPlay接口代码

  1. interface iPlay {
  2. const GAME = "超级玛丽奥";
  3. public function playGame();
  4. }

更多相关文章

  1. 社区实时问答系统收费调研
  2. 社区问答V1.0系统说明
  3. 从GC的SuppressFinalize方法带你深刻认识Finalize底层运行机制
  4. Linq中带有迭代索引的Select扩展方法,为啥知道的人不多呢?
  5. 当模板方法遇到了委托函数,你的代码又可以精简了
  6. C#中方法的调用
  7. C#9.0 终于来了,您还学的动吗? 带上VS一起解读吧!
  8. 第7章 0202-面向对象编程基础,学习心得、笔记(类声明,类的实例化,类
  9. Linq 下的扩展方法太少了,您期待的 MoreLinq 来啦

随机推荐

  1. jQuery原生框架-----------------事件
  2. jQuery和ActiveX安全性的一个严重问题?
  3. $ .post请求中的回调函数
  4. jQuery权威指南(第2版) 学习一 jQuery操作
  5. Jquery EasyUI 开发实录
  6. jquery处理多维数组
  7. 在jquery下翻看图片,如何判断最后一张呢?
  8. 如何将JQuery变量值分配给Laravel Blade
  9. console.dir()等效在xCode中使用jQuery Mob
  10. 调用没有当前上下文的OpenGL ES API(每个