我想知道是否有可能不实现来自接口的方法并让子类来做。 例如:
abstract class Foo implements Bar
{
public abstract methodFromBar();
}
然后:
class SubFoo extends Foo
{
public methodFromBar()
{
// Implementation...
}
}
这背后的想法是简化开发,只是指定子类从主类扩展而不是再次写入子类实现接口。
答案 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
如果子类未实现该方法,您将收到
行的消息致命错误:类SubFoo包含1个抽象方法,因此必须声明为abstract或实现其余方法(Bar :: methodFromBar)
对于实现接口的抽象类,您是否认为一个好主意是probably a discussion for another site。