php重载与重写的区别?重载与其他语言(如java)有何差异?

问题:
PHP手册中关于重载的内容如下:PHP所提供的”重载”(overloading)是指动态地”创建”类属性和方法。
我们是通过魔术方法(magic methods)来实现的。
如__call$funcname, $arguments 、 __callStatic$funcname, $arguments

而JAVA语言中的重载,是指在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义。

调用方法时通过传递给它们的不同参数个数和参数类型来决定具体使用哪个方法。

提问:php和java关于重载的概念肯定是有区别的,但是不知道到底真正的区别在哪里?

Java是强类型的

public class DataArtist { ... public void drawString s { ... } public void drawint i { ... } public void drawdouble f { ... } public void drawint i, double f { ... }
}

php的所谓overloading, 只是对一些魔法方法的类似重写
评论里有句话不错

This article should call this technique “interpreter hooks”.

发表评论

电子邮件地址不会被公开。 必填项已用*标注