Ответ
При вызове self::отсутствующийМетод() в классе-потомке произойдет фатальная ошибка (Fatal Error). Это происходит потому, что self всегда ссылается на класс, в котором это ключевое слово написано, а не на класс, который его вызывает во время выполнения (потомок).
Пример на PHP:
class ParentClass {
public static function foo() {
echo "Parent foon";
}
}
class ChildClass extends ParentClass {
public static function bar() {
// self ссылается на ChildClass, даже если метод вызван из него
self::missingMethod(); // Фатальная ошибка
}
}
ChildClass::bar();
// Вывод: Fatal error: Uncaught Error: Call to undefined method ChildClass::missingMethod()
Решение: Для вызова методов с учетом иерархии наследования во время выполнения используйте позднее статическое связывание с static::.