博客列表 >PHP:继承、抽象与接口

PHP:继承、抽象与接口

楷
原创
2020年05月02日 21:58:49653浏览

继承的三大功能演示

  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

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