Абстрактные частные функции

В следующем коде PHP будет недоволен тем, что customMethod () является приватным. Почему это так? Видимость определяется тем, где что-то объявлено, а не определено?

Если бы я хотел сделать customMethod видимым только для стандартного кода в классе Template и не допустить его переопределения, я бы просто сделал его защищенным и окончательным?

template.php:

abstract class Template() {
    abstract private function customMethod();

    public function commonMethod() {
        $this->customMethod();
    }
}

CustomA.php:

class CustomA extends Template {
    private function customMethod() {
       blah...
    }
}

main.php

...
$object = new CustomA();
$object->commonMethod();
..

Ответы на вопрос(4)

Ваш ответ на вопрос