Überschreiben Sie den Methodenparameter mit der untergeordneten Schnittstelle als neuen Parameter

Ich kann nicht herausfinden, warum dieser Code in PHP nicht funktioniert?

<?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);
}

?>

Es scheint, dass es keine OOP-Regeln verletzt, aber warum gibt es mir einen Fehler?

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