美文网首页
PHP中抽象类和接口的区别

PHP中抽象类和接口的区别

作者: 乔四儿丶 | 来源:发表于2019-11-26 17:32 被阅读0次

    最近在读PHP文档,发现网上的说法和文档的说法不一致,手动实践后发现文档当然是正确的,
    所以结合文档,做下总结

    抽象类(extends继承 abstract定义)

    1. 抽象类不能被直接实例化
    2. 抽象类里有0个或多个抽象方法
    3. 抽象方法只能声明调用方式,不能定义实现方式
    4. 子类必须实现所有父抽象类的抽象方法,且访问控制和父类一样或更宽松,且调用方式一致(参数数量和类型)
    5. 构造方法同样适用4

    接口(extends接口继承 interface定义 implements类继承)

    1. 接口中定义的方法都为空,继承接口的类必须实现所有方法
    2. 不能被直接实例化
    3. 接口中所有方法都是public
    4. 允许构造方法
    5. 可以定义常量和类常量,但是不可以被子类或子接口覆盖

    相同点

    1. 不能被直接实例化
    2. 抽象方法必要在子类里实现,且参数类型和数量一致

    不同点

    1. 接口可以定义常量和类常量,抽象类没限制
    2. 抽象类里的抽象方法不能是private,接口中的抽象方法只能是public
    3. 关键词不同
    4. 继承数量不同
    5. 抽象类可以继承接口和抽象类,而不实现其中的抽象方法

    应用场景
    接口:实现一组功能,功能之间不相互依赖,比如PHP的数组函数等
    抽象类:类和类之间有关联,有公用的方法,又有自己特定的功能

    相关文章

      网友评论

          本文标题:PHP中抽象类和接口的区别

          本文链接:https://www.haomeiwen.com/subject/gjdywctx.html