Blogger Information
Blog 25
fans 0
comment 0
visits 16828
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
PHP中抽象类与接口类的异同
力挽狂澜的博客
Original
738 people have browsed it

相同的地方

  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

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