接口是什么 可以做什么 为什么需要接口?
PHP是与大多数面向对象的编程语言一样,不支持多重继承,也就是说每个类只能继承一个父类。实际开发中会有多重复用的场景,PHP为了解决这个问题,引入了接口,规定实现该接口的类必须实现该类中的所有方法。
就像你看上了一个离婚的带孩子(一个或多个)的女人,她说想和我结婚可以,但是条件呢就是必须抚养我的孩子。至于怎么抚养那就是你的事了,呵护有加可以,暴打虐待也可以。。。
简单讲就是 接口就是类的模板,一个类的规定,继承了该类必须实现该类中所有的方法,具体实现方法不管,那是你的事了。接口就是大领导,指明方向,子类必须完成它规定的方法。
接口定义和使用规范:
定义:接口是抽象方法和静态常量的集合。接口是一种特殊的抽象类,这种抽象类中只包含抽象方法和静态常量。
接口中的抽象方法只能是public的,默认public权限。Abstract和final修饰符不能修饰接口中的抽象方法。
interface + 接口名 { ... }
interface User
{
//public $name;//报错,只能包含抽象方法和静态常量。
const GROUP = 12;//静态常量
//public function t(){};//报错,只能包含抽象方法和静态常量。
//private function t(){};//报错,接口中的抽象方法只能是public的,默认也是public权限。
//abstract function t(){};//报错,abstract和final修饰符也不能修饰接口中的抽象方法。
//仅下面两种定义方法可以
public function right1();
function right2();
}
接口的应用场景:
当多个对象不能抽象出共同的父类,但是有共同的行为,这种情况下就需要将这种行为封装成接口。比如登记这种行为:人,汽车,房子都需要登记,但是这三类没有共同的特征,所以要将登记这一行为封装成一个接口。再如:电脑的USB接口使用,如果符合USB接口规范,就可以插进去,并且读取或写入数据,但是 手机,U盘,MP3他们不是同一种类型,所以要将USB接口单独封装出来。
知识延申:
什么是抽象接口? 抽象类?
定义为抽象的类不能被实例化。任何一个类,如果它里面至少有一个方法是被声明为抽象的,那么这个类就必须被声明为抽象的。被定义为抽象的方法只是声明了其调用方式,不能定义其具体的功能实现。
继承一个抽象类的时候,子类必须定义为父类中的所有的抽象方法;
另外这些方法的访问控制必须和父类中一样。
关键字:abstract class + 类名{ ... }
类和接口的关系是什么 ?
是一种类似于类的结构
接口和抽象类的关系?
通常,在子类和父类之间存在逻辑上的层次结构是应当使用抽象类,而在希望支持差别较大的两个或多个对象之间的特定交互行为时,就应当使用接口。
接口如何使用 ?
抽象类和接口的区别?
接口是一种特殊的抽象类
区别 | 关键字(定义) | 关键字(使用) | 数据成员 | 构造函数 | 修饰符 | 类实现 |
抽象类 | abstract | extends | 有 | 有 | Private,protected,public | 一个 |
接口 | Interface | implements | 没有 | 没有 | 只能是public | 多个 |
相同点:抽象方法与接口的函数不能写任何东西,两个大括号也不能写,
Function + funname($val); 就可以了 ,没有参数则为空