关键字“私人”和“最终”之间有什么区别?

M G*_*ane 4 php oop methods visibility final

在 PHPPrivateFinalPHP之间存在混淆。

例如我有 3 个班级:

  1. A班(父班)
  2. B班(儿童班)
  3. C类(其他类)

我的理解:

  • A:A类、B类和C类都可以访问公共变量和方法
  • B:私有变量和方法只能被类 A 访问。
  • C:受保护的变量和方法只能被A类和B类访问
  • D:最终方法只能被 A 类访问,B 类不能访问。

我的问题是:

使用 private 后,我们可以实现像 final 这样的功能,那么为什么我们使用 final?

我问这个问题只是为了我自己的澄清。

Riz*_*123 5

为了清楚起见,关键字final不必对方法的可见性做任何事情。方法的可见性由关键字定义:public,protectedprivate

final 关键字定义了当另一个类可以访问该方法时,另一个类是否可以覆盖该方法(如果一个方法是 final 则它不能被另一个类覆盖)。否则它甚至无法访问该方法,因此它既不能使用/调用该方法也不能覆盖它。

此外,只有方法可以是最终的,它不能与属性一起使用。


A、B 和 C 是正确的,正如我上面所说,关键字 final 与可见性无关,因此 D 不正确。


有关更多信息,请参阅相应的手册页:

  • 自 PHP 8.1 起,属性也可能是最终的。 (2认同)