Как указано выше, у меня есть функция с одним входным параметром в базовом классе.
Переопределяет ли это в производном классе, но с изменением имени переменной, все еще рассматриваемой как переопределение а не как перегрузка?
Я знаю, что это относится к таким языкам, как Java, но как насчет php?
abstract public foo($a);
-> класс А1
public foo($b){}
-> класс B1 (B1 расширяет A1)
Те же вопросы, но с немного другим случаем:
abstract public foo (Vehicle $car)
-> класс А2
public foo (Mercedes $myCar)
-> класс B2 (B2 расширяет класс A2) И (класс Mercedes расширяет класс автомобиля)
Не будет выдавать никаких ошибок, все работает просто отлично. Но не будет двух разных методов foo, только один
абстрактный класс А {
абстрактная публичная функция foo ($ a);
}
класс B расширяет A {
public function foo ($ b) {}
}
Будет производить это:
Неустранимая ошибка PHP: объявление B :: foo () должно быть совместимо с
A :: foo (Автомобиль $ a) в /home/test.php в строке 11
class Vehicle {}
class Car extends Vehicle {}
abstract class A {
abstract public function foo(Vehicle $a);
}
class B extends A {
public function foo(Car $b) {}
}
В PHP нет перегрузки, просто переопределение
Других решений пока нет …