PHP Extended类是否也继承了接口?

Ste*_*ott 6 php oop inheritance

这是一个简化开发的问题,也是一个最佳实践问题.

<?php
class FOO implements Iterator
{
    ....
}

class BAR extends FOO
{
    ....
}

class OTHER extends FOO implements Iterator
{
    ....
}
?>
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,BAR还有Iterator接口吗?如果是这样,每次无论如何定义界面(如OTHER)或将BAR定义视为最佳实践是否更好?

我简化了这个例子,因为我们正在使用FOO的抽象类,我们希望确保有Iterator支持,然后可以在BAR类中重写它以便在元素之间移动.我们希望强制为子类定义一些函数,但是想要继承其他方法,并且仍然使用基本迭代器,而不必在子类上定义接口.

Mad*_*aks 6

子类将继承超类的Iterator接口的实现,它可以自由覆盖.您不需要明确说明implements Iterator,但如果您这样做,则必须在子类中实现所有Interface的方法.