PHP接口(interface)的特点
- 接口的方法必须是公开的。
- 接口的方法默认是抽象的,所以不在方法名前面加abstract。
- 接口可以定义常量,但不能定义成员属性,常量的定义和用法和类中常量一样。
- 类可以实现多个接口(相当于把多个功能集于一身,如厨房有各种厨具)
- 接口也可以继承接口。
PHP同大多数的面向对象语言一样,并不支持多重继承。如果需要实现多重继承功能,在PHP中,可以通过接口,它是PHP解决多重继承问题的方法,在php5.4版本之后有个类的新特性trait,有兴趣的可以自行了解下。
接口的思想是指定一个实现了该接口的类必须实现的一系列函数。如果没有实现接口中指定的方法,将产生一个致命错误。
当有很多人一起开发一个项目时,可能都会去调用别人写的一些类,那你就会问,我怎么知道他的某个功能的实现方法是怎么命名的呢,这个时候PHP接口类interface就起到作用了,当我们定义了一个接口类时,它里面的方式是下面的子类必须实现的,比如 :
1
2
3
4
5 interface Shop{
public function buy();
public function sell();
public function view();
}
我声明一个shop接口类,定义了三个方法:买(buy),卖(sell),浏览(view),那么继承此类的所有子类都必须实现这3个方法少一个都不行,如果子类没有实现这些话,就无法运行。实际上接口类说白了,就是一个类的模板,一个类的规定,如果你属于这类,你就必须遵循我的规定,少一个都不行,但是具体你怎么去做,我不管,那是你的事,如:
1 | class Base implements Shop |
为什么要用接口?接口到底有什么好处?接口本身并不提供实现,只是提供一个规范。如果我们知道一个类实现了某个接口,那么就知道了可以调用该接口的哪些方法,我们只需要知道这些就够了。