欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

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

程序员文章站 2022-04-30 18:14:07
...
问题:
  PHP手册中关于重载的内容如下:PHP所提供的"重载"(overloading)是指动态地"创建"类属性和方法。
我们是通过魔术方法(magic methods)来实现的。
  如__call($funcname, $arguments) 、 __callStatic($funcname, $arguments)

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

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

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

回复内容:

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

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

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

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

Java是强类型的

public class DataArtist {
    ...
    public void draw(String s) {
        ...
    }
    public void draw(int i) {
        ...
    }
    public void draw(double f) {
        ...
    }
    public void draw(int i, double f) {
        ...
    }
}

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

This article should call this technique "interpreter hooks".

相关标签: php java