【发布时间】:2015-07-28 15:20:40
【问题描述】:
在 PHP 中 Private 和 Final 之间存在混淆。
例如我有 3 个类:
- A 类(父类)
- B 类(子类)
- C 类(其他类)
我的理解:
- A:Public变量和方法可供A类、B类和C类访问
- B:私有变量和方法只能由 A 类访问。
- C:受保护的变量和方法只能由 A 类和 B 类访问
- D:Final 方法只能由 A 类访问,B 类不能访问。
我的问题是:
使用private后我们可以实现类似final的功能,那为什么要使用final呢?
我问这个问题只是为了我自己的澄清。
【问题讨论】:
-
RTM 如果可见性不是私有的,则子类可以访问最终方法。您只是不能在子类中覆盖它们。所以不同的是最终方法仍然可以被其他类访问,具体取决于可见性,但你不能像普通方法一样覆盖它们
-
表示a类的final方法b类不能访问,c类可以访问。
-
这取决于它的可见性。关键字 final 不会改变该方法的任何可访问性。它只定义另一个类是否可以覆盖它(当它可以访问它时)。但是访问是由他们的关键字定义的:
private、public、protected -
知道了,非常感谢 :-)
-
不客气,我应该把它转换成答案吗?
标签: php oop methods visibility final