几天前,我在参加一次面试,有人问我一个这样的问题:
有一个抽象类
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
不抽象,或者从bar
方法中删除abstract modifier
,但我不允许这样做);
请帮帮我,因为这个问题让我睡不着!
您需要声明类C是抽象的。