什么是php中的函数重载和覆盖?
2022-08-30 06:58:03
在PHP中,函数重载和函数覆盖是什么意思。它们之间有什么区别?无法弄清楚它们之间的区别是什么。
在PHP中,函数重载和函数覆盖是什么意思。它们之间有什么区别?无法弄清楚它们之间的区别是什么。
重载是定义具有相似签名但具有不同参数的函数。重写仅与派生类相关,其中父类已定义方法,而派生类希望重写该方法。
在 PHP 中,您只能使用魔术方法重载方法__call
。
重写的示例:
<?php
class Foo {
function myFoo() {
return "Foo";
}
}
class Bar extends Foo {
function myFoo() {
return "Bar";
}
}
$foo = new Foo;
$bar = new Bar;
echo($foo->myFoo()); //"Foo"
echo($bar->myFoo()); //"Bar"
?>
当您使用不同的参数集定义相同的函数名称两次(或更多次)时,会发生函数重载。例如:
class Addition {
function compute($first, $second) {
return $first+$second;
}
function compute($first, $second, $third) {
return $first+$second+$third;
}
}
在上面的示例中,该函数使用两个不同的参数签名重载。*PHP 尚不支持此功能。另一种方法是使用可选参数:compute
class Addition {
function compute($first, $second, $third = 0) {
return $first+$second+$third;
}
}
当您扩展类并重写父类中存在的函数时,会发生函数重写:
class Substraction extends Addition {
function compute($first, $second, $third = 0) {
return $first-$second-$third;
}
}
例如,将覆盖 中规定的行为。compute
Addition