抽象类,如何使方法抽象


Abstract class, how to make method abstract

几天前,我在参加一次面试,有人问我一个这样的问题:

有一个抽象类A,它有两个方法foobar,来自它生成了派生类C,该类仅实现了方法foo。为了进行当实现和接口类A和C不应更改

abstract class A {
    abstract public function foo();
    abstract public function bar();
}
class C extends A {
    public function foo() {
        // some code
    }
}

我说:好吧,我们可以简单地在C类中添加一个方法

public function bar() {
   //
}

他们说这是可以的,但如果你不能添加这个方法,也不能更改抽象类A(及其方法)呢。

有两种选择,要么我的面试官很傻,要么我很傻,错过了什么。

我已经阅读了关于抽象类的php.net文档,没有看到任何其他解决方案。(当然,我可以使类A不抽象,或者从bar方法中删除abstract modifier,但我不允许这样做);

请帮帮我,因为这个问题让我睡不着!

您需要声明类C是抽象的。