【发布时间】:2011-02-21 06:09:34
【问题描述】:
我一直在开发一个 ORM,目前在测试中遇到了这个错误。
Declaration of ClassA::setB() should be compatible with that of SuperClass::setB()
我的代码是这样的。
class SuperClass() {
protected $b;
public function setB(ClassB $b) {
$this->b = $b;
}
}
class ClassB {}
class ChildB extends ClassB {}
class ClassA extends SuperClass {
public function setB(ChildB $b) {
parent::setB($b);
}
}
这是例外行为。我认为ClassA是重载SuperClass的方法setB,但ClassA::setB仍然与SuperClass::setB兼容,因为类ChildB是ClassB的子类。
或者无论如何都禁止重载。
【问题讨论】:
标签: php inheritance overloading internals