界面:php 与 java
interface: php vs java
我注意到 java 和 php 在接口上有一些非常不同的地方,当你在它们的接口中创建相同的方法时。
PHP:
interface Visitor
{
public function visit(Visitable $Visitable);
public function visit(Visitable2 $Visitable2); // this is wrong in php.
}
Java:
interface Visitor
{
public double visit(Visitable Visitable);
public double visit(Visitable2 Visitable2); // this is ok in java
}
您可以在 3:35 的 this video 上查看 java。
为什么 java 允许这样做? double
有什么作用? php?
中没有 double
Java实际上允许重载:这意味着你可以有一个同名但有两个不同签名的方法。
在Java的情况下,重载中有两个同名的方法visit
:
- 一个接受类型为
Visitable
的参数;
- 另一个
Visitable2
.
你不能在 PHP 中这样做,因为 PHP 不支持重载。
另请注意,在这种情况下,double
(方法 return 类型)什么都不做。 return 类型单独 cannot be used 实现重载,因为 compiler/interpreter 无法知道在某些情况下绑定哪个实现。
我注意到 java 和 php 在接口上有一些非常不同的地方,当你在它们的接口中创建相同的方法时。
PHP:
interface Visitor
{
public function visit(Visitable $Visitable);
public function visit(Visitable2 $Visitable2); // this is wrong in php.
}
Java:
interface Visitor
{
public double visit(Visitable Visitable);
public double visit(Visitable2 Visitable2); // this is ok in java
}
您可以在 3:35 的 this video 上查看 java。
为什么 java 允许这样做? double
有什么作用? php?
double
Java实际上允许重载:这意味着你可以有一个同名但有两个不同签名的方法。
在Java的情况下,重载中有两个同名的方法visit
:
- 一个接受类型为
Visitable
的参数; - 另一个
Visitable2
.
你不能在 PHP 中这样做,因为 PHP 不支持重载。
另请注意,在这种情况下,double
(方法 return 类型)什么都不做。 return 类型单独 cannot be used 实现重载,因为 compiler/interpreter 无法知道在某些情况下绑定哪个实现。