对于 PHP,如果你的类是最终的,是否有理由使用受保护


for php, is there ever a reason to use protected if your class is final?

一个例子:

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';
  }
}
没有

真正的区别。privateprotected 都只能从类内部调用,protected还可以从子类中调用。

由于您将类声明为 final ,因此永远不会有子类,因此从实际的角度来看,privateprotected在这里具有相同的效果。

关键是你不能用私有方法覆盖受保护的方法。访问修饰符必须保持不变或更高。因此,它必须受到保护或可以公开