zoukankan      html  css  js  c++  java
  • php抽象类,接口,特性的比较

    php抽象类

    • 抽象方法必须被子类继承实现,所以不能为私有,只能是受保护的或公有的;
    • 抽象类子类的方法访问控制级别必须和抽象类相等或更宽松。例如,父类的抽象方法是受保护的,子类实现时则必须为受保护的或者公有的;
    • 抽象方法的实现,必传参数的数量和类型必须严格一致;
    • 抽象类的非抽象方法,子类可不实现,等同于普通类方法的继承;
    • 抽象类中的抽象方法,只能定义,不能实现其方法体;
    • 抽象类可定义常量,且可被子类覆盖;

    接口

    • 接口类可以通过extend继承一个或多个接口类,多个接口之间用逗号分隔,用以实现接口类的扩充;
    • 接口类定义的方法必须声明为公有,因此子类的实现方法也只能为公有;
    • 接口方法体必须为空;
    • 接口类定义的常量和类常量私用方式一样,但不能被子类或者子接口覆盖;
    • 普通类通过关键字implements来实现一个或多个接口;
    • 继承多个接口,方法不能有重名;
    • 普通类继承接口,必须实现接口类里面所有的方法,参数也和接口方法定义相同;
    • 可加默认参数,这点和抽象类方法的实现基本一致;

    特性

    • 特性与普通类相似,有自己的方法,属性,但不能通过extends继承,也没有类常量;
    • 特性的方法如果和当前类方法冲突,会被当前类的方法覆盖(优先级:当前类>特性类>基类);
    • 一个类加载了多个特性,当多个特性中方法有重名时,需要在代码中通过关键字insteadof设置优先级或通过as关键字重命名处理,否则报错;
  • 相关阅读:
    hdu 4293 2012成都赛区网络赛 dp ****
    hdu 4291 2012成都赛区网络赛 矩阵快速幂 ***
    hdu 4288 线段树 暴力 **
    hdu 4278 2012天津赛区网络赛 数学 *
    zoj 3888 线段树 ***
    虚拟化技术详解
    BRD、MRD 和 PRD 之间的区别与联系有哪些?
    salt-master配置、salt-minion配置
    Shell 脚本实现 Linux 系统监控
    Centos 7 安装 Xen
  • 原文地址:https://www.cnblogs.com/jjxhp/p/14228021.html
Copyright © 2011-2022 走看看