什么是PHP中的函数重载和覆盖?

在PHP中,你的意思是函数重载和函数重写。它们两者有什么区别?无法弄清楚它们之间有什么区别。



哔哔one
浏览 492回答 3
3回答

RISEBY

重载是定义具有相似签名但具有不同参数的函数。覆盖仅与派生类相关,其中父类已定义方法,派生类希望覆盖该方法。在PHP中,您只能使用magic方法重载方法__call。覆盖的一个例子:<?phpclass Foo {&nbsp; &nbsp;function myFoo() {&nbsp; &nbsp; &nbsp; return "Foo";&nbsp; &nbsp;}}class Bar extends Foo {&nbsp; &nbsp;function myFoo() {&nbsp; &nbsp; &nbsp; return "Bar";&nbsp; &nbsp;}}$foo = new Foo;$bar = new Bar;echo($foo->myFoo()); //"Foo"echo($bar->myFoo()); //"Bar"?>

互换的青春

使用不同的参数集定义相同的函数名两次(或更多)时,会发生函数重载。例如:class Addition {&nbsp; function compute($first, $second) {&nbsp; &nbsp; return $first+$second;&nbsp; }&nbsp; function compute($first, $second, $third) {&nbsp; &nbsp; return $first+$second+$third;&nbsp; }}在上面的示例中,函数compute使用两个不同的参数签名重载。* PHP尚不支持此功能。另一种方法是使用可选参数:class Addition {&nbsp; function compute($first, $second, $third = 0) {&nbsp; &nbsp; return $first+$second+$third;&nbsp; }}扩展类并重写父类中存在的函数时,会发生函数重写:class Substraction extends Addition {&nbsp; function compute($first, $second, $third = 0) {&nbsp; &nbsp; return $first-$second-$third;&nbsp; }}例如,compute覆盖中所述的行为Addition
打开App,查看更多内容
随时随地看视频慕课网APP