接口(interface)的概念 | wniu

接口(interface)的概念

PHP接口(interface)的特点

  1. 接口的方法必须是公开的。
  2. 接口的方法默认是抽象的,所以不在方法名前面加abstract。
  3. 接口可以定义常量,但不能定义成员属性,常量的定义和用法和类中常量一样。
  4. 类可以实现多个接口(相当于把多个功能集于一身,如厨房有各种厨具)
  5. 接口也可以继承接口。
    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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Base implements Shop
{

public function buy()
{
// TODO: Implement tebuyst() method.
}

public function sell()
{
// TODO: Implement sell() method.
}

public function view()
{
// TODO: Implement view() method.
}
}

为什么要用接口?接口到底有什么好处?接口本身并不提供实现,只是提供一个规范。如果我们知道一个类实现了某个接口,那么就知道了可以调用该接口的哪些方法,我们只需要知道这些就够了。

0%