搜索
博主信息
博文 25
粉丝 0
评论 0
访问量 20107
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
PHP中抽象类与接口类的异同
力挽狂澜的博客
原创
955人浏览过

相同的地方

  1. 都不能实例化

  2. 都有通过定义方法而不实现的特征来规范子类的作用,继承或实现的子类的访问权限不能比其更私密,必须是相同或者更宽松的访问权限


不同的地方

  1. 接口类只能被接口类继承extends,被其他类[抽象类或普通类]实现implments,抽象类不能被任何类实现implements,只能被[抽象类或普通类]继承extends

  2. 接口类的方法访问权限只能是public,抽象类的方法的访问权限不能是private

  3. 接口类只定义方法和类常量,抽象类还可以定义属性

  4. 抽象类只定义不能实现的方法,抽象类还可以定义有具体实现的方法


个人总结:

  1. 两者都是起规范子类作用的

  2. 接口更倾向于规范行为,抽象类更倾向于抽象类别[可以定义成员属性的原因]

  3. 因为访问权限的区别以及继承和实现的特性,接口主要是规范对外完全开放的行为[必须public的方法定义],抽象类可以选择性的对外开放或对外关闭并对内限制[protected的抽象方法]

  4. 接口更像是规范或协议书,抽象类更像是基于规范的demo或模板


建议编码的方式是

//逻辑
if(完全对外开放的规范){
    declare interface
    use abstract implements interface
    use class extends abstract
}else{
    declare abstract
    use class extends abstract
}

参考

  1. 类相关的关键字 - abstract

  2. 类相关的关键字 - interface

本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系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+教程免费学