Blogger Information
Blog 119
fans 3
comment 1
visits 95161
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
继承、抽象类和接口
赵大叔
Original
741 people have browsed it

1、继承的三大功能

  • class ‘子类名’ extends ‘父类名’
STT 操作 描述
1 继承 父类的二类成员自动成为子类的成员
2 重写 覆写与父类/基类同名的成员(属性, 方法)
3 扩展 子类添加自身的方法来增加/扩展父类的功能

演示代码:

  1. <?php
  2. // 类的继承的三个功能
  3. class Actor
  4. {
  5. protected $name = '吴邪';
  6. protected $age = 28;
  7. private $salary = 19999;
  8. protected static $nationality = '中国/CHINA';
  9. public function resume()
  10. {
  11. return "姓名: {$this->name} , 年龄: {$this->age}, 工资: {$this->salary}";
  12. }
  13. }
  14. // 类的继承的三个功能
  15. // 继承
  16. class Lending1 extends Actor {
  17. // 现在该子类中什么内容也没有,可以访问父类中的成员
  18. }
  19. // 重写和扩展
  20. class Lending2 extends Actor
  21. {
  22. // 1. 重写
  23. // 属性重写
  24. protected $age = 35;
  25. // 方法重写, 方法级的多态
  26. public function resume()
  27. {
  28. // 在子类中可以引用父类成员
  29. // parent::write()
  30. return parent::resume() . ', 是盗墓笔记的主角之一!';
  31. }
  32. // 2. 扩展
  33. // 属性扩展
  34. protected $profession = '盗墓贼';
  35. // 方法扩展
  36. public function resume1()
  37. {
  38. // return "$this->salary}"; 不能访问
  39. return parent::resume() . ", 职业: {$this->profession}";
  40. }
  41. }
  42. // 客户端
  43. $lending1 = new Lending1;
  44. // 访问的是父类中的成员(private也能访问)
  45. echo $lending1->resume() . '<br>';
  46. $lending2 = new Lending2;
  47. echo $lending2->resume() . '<br>';
  48. echo $lending2->resume1() . '<br>';

演示效果展示:

2、抽象类的作用与实现 abstract抽象类关键字

只要一个类中有一个抽象方法, 那么这个类就是:抽象类
抽象类的作用: 部分分离了” 设计(抽象类中完成)与实现(工作类中完成)

演示代码:

  1. <?php
  2. // 类的继承的三个功能
  3. abstract class Actor
  4. {
  5. protected $name = '吴邪';
  6. protected $age = 28;
  7. private $salary = 19999;
  8. protected static $nationality = '中国/CHINA';
  9. // 具体方法:有方法体: {...},
  10. public function resume()
  11. {
  12. return "姓名: {$this->name} , 年龄: {$this->age}, 工资: {$this->salary}";
  13. }
  14. // 抽象方法:没有方法体
  15. abstract protected function resume1();
  16. }
  17. // 工作类也可是一个抽象类,继承后才能调用
  18. abstract class Lending1 extends Actor
  19. {
  20. protected $profession = '盗墓贼';
  21. // 方法扩展
  22. public function resume1()
  23. {
  24. // return "$this->salary}"; 不能访问
  25. return parent::resume() . ", 职业: {$this->profession}";
  26. }
  27. }
  28. class Work extends Lending1 {
  29. }
  30. // 客户端
  31. $work = new Work;
  32. echo $work->resume1() . '<br>';

演示效果展示:

3、接口基本语法

关键字: interface
语法和类相似: 抽象方法, 常量, 构造方法
所的方法都是抽象方法
访问控制必须是public
接口: 完全分离了” 设计(抽象类中完成)与实现(工作类中完成)
接口实现关键字:implements

演示代码:

  1. <?php
  2. // 接口使用场景1: 单接口
  3. interface iActor
  4. {
  5. // 接口常量
  6. const NATION = '中国';
  7. // 接口方法: 都是抽象方法
  8. public function resume();
  9. }
  10. // 工作类实现接口
  11. class Lending implements iActor
  12. {
  13. protected $name = '张小哥';
  14. // 接口中的抽象方法,必须在工作类实现
  15. public function resume()
  16. {
  17. return $this->name . ' 的国籍是: ' . iActor::NATION;
  18. }
  19. }
  20. // 客户端
  21. $lending = new Lending;
  22. echo $lending->resume();

演示效果展示:

总结

初步理解继承、抽象类、接口的基础知识和简单的用法,当然离完全掌握还差很远,书读百遍,其义自现,想要真正的掌握还要多读多写。

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