博客列表 >第8章 0203-静态绑定,接口与抽象类,学习心得、笔记(抽象类、继承、实现接口、方法重写、trait)

第8章 0203-静态绑定,接口与抽象类,学习心得、笔记(抽象类、继承、实现接口、方法重写、trait)

努力工作--周工--Robin
努力工作--周工--Robin原创
2021年02月26日 01:20:07696浏览

示例运行截图

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. }

上一条:pdo操作下一条:重载get
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议