Переопределить параметр метода с дочерним интерфейсом в качестве нового параметра

Я не могу понять, почему этот код не работает в PHP?

<?php

interface Engine {

    function run();
}

interface HydroEngine extends Engine {

    function run();
}

interface Car {

    function setEngine(Engine $engine);

}

interface WaterCar extends Car {

    function setEngine(HydroEngine $engine);
}

?>

Кажется, он не нарушает никаких правил ООП, но почему он выдает ошибку?

Fatal error: Declaration of WaterCar::setEngine() must be compatible with Car::setEngine(Engine $engine)

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

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