PHP接口和抽象

接口

定义接口
  1. 通过interface关键字定义接口
  2. 使用implements操作符来实现接口
  3. 接口定义某个类必须实现哪些方法,不需要定义方法的具体内容,所有方法都是空的
定义接口要注意一下几点
  1. 接口不能包含成员变量,但可以什么类常量
  2. 接口不能有构造函数
  3. 接口中定义的所有方法都必须是公有,这是接口的特性
  4. 类中必须实现接口中定义的所有方法,而且必须使用和接口定义方法一致的方式,否则会报一个致命错误
  5. 接口中的方法可以定义需要传入的参数,类实现的时候也需要传入
  6. 类可以实现多个接口,用逗号来分隔多个接口的名称
  7. 实现多个接口时,接口中的方法不能有重名
  8. 接口也可以继承,通过使用extends操作符

抽象

定义抽象
  1. 使用abstract关键字定义抽象
  2. 任何一个类,如果它里面至少有一个方法是被声明为抽象的,那么这个类就必须被声明为抽象的
  3. 定义为抽象的类不能被实例化
  4. 被定义为抽象的方法只是声明了其调用方式(参数),不能定义其具体的功能实现
  5. 继承一个抽象类的时候,子类必须定义父类中的所有抽象方法;另外,这些方法的访问控制必须和父类中一样(或者更为宽松)
    eg: 例如某个抽象方法被声明为受保护的,那么子类中实现的方法就应该声明为受保护的或者公有的,而不能定义为私有的
  6. 此外方法的调用方式必须匹配,即类型和所需参数数量必须一致
    eg:例如,子类定义了一个可选参数,而父类抽象方法的声明里没有,则两者的声明并无冲突

接口和抽象的区别

  1. 对接口的继承使用implements,抽象类使用extends
  2. 接口中不可以声明变量,但可以声明类常量.抽象类中可以声明各种变量
  3. 接口没有构造函数,抽象类可以有
  4. 接口中的方法默认为public,抽象类中的方法可以用public,protected,private修饰
  5. 一个类可以继承多个接口,但只能继承一个抽象类
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值