博主信息
博文 17
粉丝 1
评论 0
访问量 18138
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
PHP基础: 接口与抽象类
zl的php学习博客
原创
788人浏览过

1. 接口

  1. <?php
  2. // 接口: 接口中有两个成员[接口常量, 公共抽象方法]. 接口定义的方法必须在子类(实现类)中全部实现
  3. interface iTestDemo
  4. {
  5. // 接口常量
  6. const INTERFACR_NAME = 'iTestDemo';
  7. // 构造函数
  8. public function __construct(...$ages);
  9. //公共抽象方法1
  10. public function funcName(): string;
  11. //公共抽象方法2
  12. public static function metName(): string;
  13. }
  14. class TestDemo implements iTestDemo
  15. {
  16. public function funcName(): string
  17. {
  18. return __FUNCTION__;
  19. }
  20. public static function metName(): string
  21. {
  22. return __METHOD__;
  23. }
  24. public function __construct(...$ages) { }
  25. }
  26. // 调用方法
  27. echo (new TestDemo())->funcName(), '<br>';
  28. // 调用静态方法
  29. echo TestDemo::metName(), '<br>';
  30. // 调用接口常量1
  31. echo TestDemo::INTERFACR_NAME, '<br>';
  32. // 调用接口常量2 -- 推荐方式,用接口调用
  33. echo iTestDemo::INTERFACR_NAME, '<br>';

2. 抽象类

  1. // 抽象类: 由abstract关键字修饰, 抽象类中的抽象方法必须在子类(实现类)中全部实现. 不可实例化. 只要是类中存在抽象方法,这个类就是抽象类
  2. abstract class aTestDemo
  3. {
  4. // 构造函数
  5. public function __construct(...$ages)
  6. {
  7. }
  8. //公共抽象方法1
  9. public function funcName(): string
  10. {
  11. return __CLASS__ . '=====>' . __FUNCTION__;
  12. }
  13. //公共抽象方法2
  14. abstract public static function metName(): string;
  15. // {
  16. // return __CLASS__ . '=====>' . __FUNCTION__;
  17. // }
  18. }
  19. class TestDemo2 extends aTestDemo
  20. {
  21. public static function metName(): string
  22. {
  23. return __CLASS__ . '=====>' . __FUNCTION__;
  24. }
  25. }
  26. // 调用方法
  27. echo (new TestDemo2())->funcName(), '<br>';
  28. // 调用抽象方法
  29. echo TestDemo2::metName(), '<br>';

3. 区别

类别 是否可以定义变量 是否可以定义常量 是否可以实例化 是否可以使用构造函数 是否可以定义实例方法 是否可以继承 实现类是否必须要全部实现父级的方法 是否只能使用public修饰符
抽象类 true true false true true true false false
接口 false false false true false true true true

另外, 接口可以实现多继承, 而抽象类只能继承一个.

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

批改状态:合格

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

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

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