特立独行的世外高人-php中的interface

1. 什么是interface

在PHP中,interface是一种特殊的类,定义了一个类必须实现的方法,但是不需要实现这些方法。简单来说,interface就是约定某个行为的规范,具体行为的实现在类中实现。

interface Car {

public function getBrand();

public function getColor();

}

上述代码定义了一个名为Car的interface,里面包含了getBrand和getColor这两个方法。

注意:interface中不能有属性,这是与类的区别。

2. interface与类的关系

2.1 interface的实现

一个类通过实现一个或多个interface来实现这些interface中规定的方法,实现interface时使用implement关键字。例如:

class BMW implements Car {

// 实现getBrand方法

public function getBrand() {

return 'BMW';

}

// 实现getColor方法

public function getColor() {

return 'Black';

}

}

上述代码中,BMW类实现了Car interface,并且实现了该interface中规定的getBrand和getColor方法。

2.2 类继承与接口实现

类可以实现一个或多个interface,同时继承其他类。在这种情况下,先继承类,再实现interface。例如:

class BMWCar extends CarFactory implements Car {

// 实现getBrand方法

public function getBrand() {

return 'BMW';

}

// 实现getColor方法

public function getColor() {

return 'Black';

}

}

上述代码中,BMWCar继承CarFactory类并实现了Car interface。

3. interface的作用

3.1 统一接口规范

通过定义interface,我们可以统一一组类的接口规范,这样可以方便其他开发人员理解和使用我们的代码。

3.2 多态性

通过interface,我们可以实现多态性。比如:

class CarFactory {

public function buildCar(Car $car) {

$brand = $car->getBrand();

$color = $car->getColor();

return new Car($brand, $color);

}

}

上述代码建立了一个CarFactory类,其中buildCar方法接收一个实现了Car接口的类的实例。这里传递的参数可以是BMW、Benz等实现了Car的类的实例。这样,在调用buildCar方法时,我们无需考虑参数是何种类型,只要该类实现了Car接口规定的方法即可。

后端开发标签