Интерфейс: PHP против Java

Я замечаю что-то очень разное между 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?

1

Решение

Java на самом деле позволяет перегрузка: это означает, что вы можете иметь метод с тем же именем, но с двумя разными сигнатурами.

В случае Java есть два метода с одинаковым именем visit в перегрузке:

  1. каждый принимает параметр типа Visitable;
  2. другой Visitable2,

Вы не можете сделать это в PHP, потому что PHP не поддерживает перегрузку.

Также обратите внимание, что double (метод, возвращаемый тип) в этом случае ничего не делает. Тип возврата один не может быть использован чтобы добиться перегрузки, так как компилятор / интерпретатор не может знать, какую реализацию связывать при некоторых обстоятельствах.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]