PHP是否有抽象接口的公开实现?

时间:2015-01-19 18:08:11

标签: php oop abstract

我想到的概念来自Traversable界面。此接口不能直接实现,而是通过实现扩展它的接口来满足。

我可以声明一个无法实现的接口,而是使用公共接口扩展吗?

编辑:我意识到这种可能性是毫无意义的,因为第三方可以通过创建可扩展基本接口的接口来规避这种可能性。我正在寻找一种更清晰的表达多态性的方法。

例如:

abstract interface Vehicle
{
}

interface Car extends Vehicle
{
    public function drive(RouteProvider $routeProvider, $speed)
}

interface Boat extends Vehicle
{
    public function sail(BodyOfWater $water, $heading);
}

class PeopleMover
{
    public function move(Vehicle $vehicle)
    {
        if ($vehicle instanceof Boat) {
            // move people across bodies of water
        } elseif ($vehicle instanceof Car) {
            // move people along roads
        }
    }
}

1 个答案:

答案 0 :(得分:1)

接口的目的是定义应用程序如何访问对象,而不是控制对象的定义方式。这是对象向应用程序声明的一种方式,“我实现了这个接口,所以你可以相信我有这些方法。”

如果要控制对象的定义方式,则应使用抽象类和抽象方法。