声明抽象从接口实现的方法

时间:2018-06-06 16:26:18

标签: php

我想知道是否有可能不实现来自接口的方法并让子类来做。 例如:

abstract class Foo implements Bar
{
    public abstract methodFromBar();
}

然后:

class SubFoo extends Foo
{
    public methodFromBar()
    {
        // Implementation...
    }
}

这背后的想法是简化开发,只是指定子类从主类扩展而不是再次写入子类实现接口。

1 个答案:

答案 0 :(得分:0)

您根本不需要在父类中提及接口方法。如果它没有实现列出的接口,那么PHP将要求子类代替合同。这样可以正常工作:

interface Bar
{
    public function methodFromBar();
}

abstract class Foo implements Bar
{
}

class SubFoo extends Foo
{
    public function methodFromBar()
    {
        echo 'Hello world';
    }
}

$subFoo = (new SubFoo)->methodFromBar();
// Hello world

请参阅https://eval.in/1016337

如果子类未实现该方法,您将收到

行的消息
  

致命错误:类SubFoo包含1个抽象方法,因此必须声明为abstract或实现其余方法(Bar :: methodFromBar)

对于实现接口的抽象类,您是否认为一个好主意probably a discussion for another site