Mogę przesłonić metodę PHP w klasie potomnej i zmienić parametry w podpisie, jak pokazano poniżej.Czy klasy potomne PHP mogą zmieniać parametry nadpisywanych metod?
class theParent {
function myMethod($param1) {
// code here
}
}
class theChild extends theParent {
function myMethod($param1, $param2) {
// code here
}
}
Przetestowałem to i działa dobrze i nie powoduje żadnych błędów. Moje pytanie brzmi, czy to ta zła forma? Lub podstawowej zasady OOP?
Jeśli metoda nadrzędna jest deklarowana jako abstrakcyjna, podpisy podrzędne nie mogą się różnić. Prawdopodobnie jest to mechanizm, który należy zastosować, jeśli chcesz wymusić ten aspekt interfejsu?
To klasa dziecko nie jest dzieckiem klasy pierwszej. Nie wspominając już o nieważnej składni ... – nickb
Nazywa się ** override **. Jeśli chcesz, aby klasa podrzędna nie przesłaniała metody, użyj słowa kluczowego [final] (http://php.net/manual/en/language.oop5.final.php). –