Я замечаю что-то очень разное между java и php в интерфейсе, когда вы создаете одинаковые методы в их интерфейсах.
PHP:
interface Visitor
{
public function visit(Visitable $Visitable);
public function visit(Visitable2 $Visitable2); // this is wrong in php.
}
Джава:
interface Visitor
{
public double visit(Visitable Visitable);
public double visit(Visitable2 Visitable2); // this is ok in java
}
Вы можете посмотреть на проверить это на это видео в 3:35 для Java.
почему Java это позволяет? что значит double
Делать что-нибудь? и нет double
в php?
Java на самом деле позволяет перегрузка: это означает, что вы можете иметь метод с тем же именем, но с двумя разными сигнатурами.
В случае Java есть два метода с одинаковым именем visit
в перегрузке:
Visitable
;Visitable2
,Вы не можете сделать это в PHP, потому что PHP не поддерживает перегрузку.
Также обратите внимание, что double
(метод, возвращаемый тип) в этом случае ничего не делает. Тип возврата один не может быть использован чтобы добиться перегрузки, так как компилятор / интерпретатор не может знать, какую реализацию связывать при некоторых обстоятельствах.
Других решений пока нет …