PHP 的接口、抽象类定义和区别

PHP中的接口

PHP不支持多重继承,每个类只能继承一个父类。
接口的思想是指定了一个实现了该接口的类必须实现的一系列方法,相当于告诉别人我有那些设置好的插口,必须按我的规格来。

语法 :

interface 接口名{ ... }

规范:

  • 接口是一种特殊的抽象类,这种抽象类中只包含抽象方法和静态常量。
  • 在接口中的抽象方法只能是 public的,默认也是public权限。
  • abstract和final修饰符也不能修饰接口中的抽象方法。
  • 接口不能有属性普通方法可以有常量

PHP中的抽象类

  • 定义一些方法,子类必须完全实现这个抽象中所有的方法
  • 不能从抽象类创建对象,它的意义在于被扩展
  • .抽象类通常具有抽象方法,方法中没有大括号
  • 在子类实现抽象类的方法时,其子类的可见性必须大于或等于抽象方法的定义
  • 如果抽象方法有参数,那么子类的实现也必须有相同的参数个数
  • 某个类只要至少含有一个抽象方法,就必须声明为抽象类
  • 继承抽象类的子类,如果不实现所有抽象方法,那么该子类也为抽象类
  • 可以有构造方法

语法

abstract class ClassName{
    abstract function FunctionName();
}

区别与共同点

相同点:

  • 都是用于声明某一种事物,规范名称、参数,形成模块,未有详细的实现细节!
  • 都是通过类来实现相关的细节工作
  • 语法上,抽象类的抽象方法与接口一样,不能有方法体,即{}符号
  • 都可以用继承,接口可以继承接口形成新的接口,抽象类可以继承抽象类从而形成新的抽象类

区别:

  • 抽象类可以有属性、普通方法、抽象方法,但接口不能有属性、普通方法、可以有常量
  • 抽象类内未必有抽象方法,但接口内一定会有“抽象”方法
  • 语法上有不同
    • 抽象类用abstract关键字在类前声明,且有class声明为类,接口是用interface来声明,但不能用class来声明,因为接口不是类!
    • 抽象类的抽象方法一定要用abstract来声明,而接口则不需要
    • 抽象类是用extends关键字让子类继承父类后,在子类实现详细的抽象方法!而接口则是用implements让普通类在类里实现接口的详细方法,且接口可以一次性实现多个方法,用逗号分开各个接口就可

提示

评论区 (0)

没有记录
支持 markdown,图片截图粘贴拖拽都可以自动上传。
黑白课堂

黑白课堂

混元大罗金仙 站长创业者玉树凌风每天醒来0收入

查看更多

最新视频课程

Laravel 的 PhpSpreadsheet 包入门

wap2App 入门讲解,100%速成,全面为你讲解。

ace.js 打造一款属于你的 Web 编辑器,入门文档。

Laravel Permission 中文文档

解释 OAuth 2.0 认证 和使用场景说明

Laravel 之 horizon 队列管理界面系统

钻级赞助商