Zastąp parametr metody interfejsem potomnym jako nowy parametr

Nie mogę zrozumieć, dlaczego ten kod nie działa w 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);
}

?>

Wydaje się, że nie łamie żadnych reguł OOP, ale dlaczego daje mi błąd?

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

questionAnswers(2)

yourAnswerToTheQuestion