Ü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)

Antworten auf die Frage(2)

Ihre Antwort auf die Frage