下面的代码:
class A {
public function foo() {}
}
class B extends A {
private function foo() {}
}
得到一个错误:"对B::foo()的访问级别必须是公共的(如在类A中)"
为什么我不能将B类中的A类foo方法重写为private?
唯一的规则是:
"子类重写方法的访问权限不能比超类方法弱"。
class A {
public function foo() {}
}
class B extends A {
private function foo() {}
}
不能用私有函数覆盖公共函数,如果要覆盖函数,则两者都必须是公共函数。