前几天我正在接受面试,我被问到这样一个问题:
有一个抽象类
A
有两个方法foo
和bar
,来自 它生成了派生类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
不抽象或从abstract modifier
删除bar
方法,但我不允许这样做);
答案 0 :(得分:1)
你需要声明C类是抽象的。