3 回答
TA贡献1856条经验 获得超5个赞
重载是定义具有相似签名但具有不同参数的函数。覆盖仅与派生类相关,其中父类已定义方法,派生类希望覆盖该方法。
在PHP中,您只能使用magic方法重载方法__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"
?>
TA贡献1797条经验 获得超6个赞
使用不同的参数集定义相同的函数名两次(或更多)时,会发生函数重载。例如:
class Addition {
function compute($first, $second) {
return $first+$second;
}
function compute($first, $second, $third) {
return $first+$second+$third;
}
}
在上面的示例中,函数compute使用两个不同的参数签名重载。* PHP尚不支持此功能。另一种方法是使用可选参数:
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
- 3 回答
- 0 关注
- 491 浏览
添加回答
举报