一个例子:
class A {
protected function foo() {
echo 'fooA';
}
}
我想在我的子类中覆盖 foo(),这是最终的。有没有理由在这里使用受保护?
final class B extends A {
protected function foo() {
echo 'fooB';
}
}
与
final class B extends A {
private function foo() {
echo 'fooB';
}
}
没有
真正的区别。private
和 protected
都只能从类内部调用,protected
还可以从子类中调用。
由于您将类声明为 final
,因此永远不会有子类,因此从实际的角度来看,private
和protected
在这里具有相同的效果。
关键是你不能用私有方法覆盖受保护的方法。访问修饰符必须保持不变或更高。因此,它必须受到保护或可以公开