以下代码会让 PHP 对 customMethod() 是私有(private)的感到不满。为什么会这样?可见性是由声明而不是定义的地方决定的吗?
如果我想让 customMethod 只对 Template 类中的样板代码可见并防止它被覆盖,我是否可以将它设为 protected 和最终的?
模板.php:
abstract class Template() {
abstract private function customMethod();
public function commonMethod() {
$this->customMethod();
}
}
CustomA.php:
class CustomA extends Template {
private function customMethod() {
blah...
}
}
主.php
...
$object = new CustomA();
$object->commonMethod();
..
最佳答案
抽象方法不能是私有(private)的,因为根据定义它们必须由派生类实现。如果您不希望它是public
,则需要对其进行protected
,这意味着它可以被派生类看到,但没有其他人可以看到。
The PHP manual on abstract classes向您展示以这种方式使用 protected
的示例。
关于php - 抽象私有(private)函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7939199/