Blogger Information
Blog 39
fans 0
comment 0
visits 30655
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
PHP:继承、抽象与接口
Original
654 people have browsed it

继承的三大功能演示

  1. <?php
  2. // 类的继承
  3. // 父类: 基类
  4. class User
  5. {
  6. protected $name = '卫斯理';
  7. protected $age = 45;
  8. private $salary = 1;
  9. protected static $nationality = '中国/香港';
  10. public function write()
  11. {
  12. return "姓名: {$this->name} , 年龄: {$this->age}";
  13. }
  14. }
  15. // 子类对父类的三种操作: 继承, 重写, 扩展
  16. // 1. 继承: 父类的二类成员自动成为子类的成员
  17. // 2. 重写: 覆写与父类/基类同名的成员(属性, 方法)
  18. // 3. 扩展: 子类添加自身的方法来增加/扩展父类的功能
  19. class Rob extends User
  20. {
  21. // 1. 重写父类成员
  22. // 属性重写
  23. protected $age = 55;
  24. // 方法重写, 方法级的多态
  25. public function write()
  26. {
  27. // 在子类中可以引用父类成员
  28. // parent::write()
  29. return parent::write() . ', 是一个不可思议事件的探索者~~';
  30. }
  31. // 2. 扩展
  32. // 属性扩展
  33. protected $profession = '未知探索者';
  34. // 方法扩展
  35. public function write1()
  36. {
  37. return parent::write() . ", 职业: {$this->profession}";
  38. }
  39. }
  40. // 客户端
  41. $user = new User;
  42. echo $user->write() . '<br>';
  43. $rob = new Rob;
  44. echo $rob->write() . '<br>';
  45. echo $rob->write1() . '<br>';

演示效果

抽象类的演示

  1. <?php
  2. // 抽象类的作用与实现
  3. // 抽象类: 部分分离了" 设计(抽象类中完成)与实现(工作类中完成)"
  4. abstract class User
  5. {
  6. protected $name = '王胖子';
  7. protected $age = 40;
  8. // 类方法
  9. protected function output()
  10. {
  11. return "姓名: {$this->name} , 年龄: {$this->age}";
  12. }
  13. // 抽象方法:没有方法体,类方法是抽象类的,称为抽象类
  14. abstract protected function output1();
  15. }
  16. // 工作了实现例,也可是一个抽象类
  17. abstract class Rob extends User{
  18. protected $profession = '摸金校尉助手';
  19. // 必须将抽象类中的抽象方法实现
  20. protected function output1() {
  21. return parent::output() . ", 职业: {$this->profession}";
  22. }
  23. }
  24. // 客户端
  25. // 抽象类不能被实例化,最终工作类: 允许实例化
  26. class Work extends Rob
  27. {
  28. public function output1()
  29. {
  30. return parent::output1();
  31. }
  32. }
  33. $work = new Work();
  34. echo $work->output1();

演示效果

【实例】接口的基本语法

  1. <?php
  2. // 接口: 完成分离了"设计与实现"
  3. // 关键字: interface
  4. // 使用与类相似的语法: 抽象方法, 常量, 构造方法(魔术方法的一种)
  5. // 默认访问控制必须是public
  6. // 接口允许多继承, 从而间接实现了PHP的多继承
  7. // implements
  8. // 接口的基本语法 -->单接口
  9. interface iUser
  10. {
  11. // 接口常量
  12. const Nation = '中国';
  13. // 接口方法(抽象方法)
  14. public static function output();
  15. }
  16. // 工作类实现接口
  17. class User implements iUser
  18. {
  19. // 类变量
  20. protected static $name = '王胖子';
  21. // 接口中的抽象方法,必须在工作类实现
  22. public static function output()
  23. {
  24. return self::$name . '的国籍是'. iUser::Nation;
  25. }
  26. }
  27. // 客户端
  28. echo User::output();

演示效果

总结:
1.PHP面向对象的三大特征是封装、继承、多态。
子类对父类(基类)的三种操作:继承(系统自动完成)、重写、扩展。
2.抽象类的演示中,不知哪里有问题,总是没有结果显示,每条语句都对照过,查不出问题,最后没办法,只能另起文件再做一次就没问题了。我估计是搜狗输入法和这个VSC编辑器配合的问题。
3.单接口的语法:常量、抽象方法
关键词:interface
实现接口的关键词:implement

Correcting teacher:天蓬老师天蓬老师

Correction status:qualified

Teacher's comments:没有显示,第一是检查有没有打印输出 语句, 第二是打断点, 用die()随意显示点东西, 确定代码执行到哪了
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