博主信息
博文 119
粉丝 3
评论 1
访问量 121288
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
继承、抽象类和接口
赵大叔
原创
959人浏览过

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();

演示效果展示:

总结

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

批改老师:天蓬老师天蓬老师

批改状态:合格

老师批语:再长路也长不过双腿, 行动起来吧
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学