函數重載和覆蓋(也叫重寫)是PHP中的OOP(面向對象)特性。在函數重載中,多個函數可以具有相同的方法名但參數的數量或類型不同。但是在函數重寫的情況下,多個函數將具有相同的方法名和參數數量。
- 函數重載: 函數重載包含相同的函數名稱,該函數根據參數的數量和類型執行不同的任務。在PHP中,函數重載是在魔術方法__call()的幫助下完成的。此函數採用函數名稱和參數。函數重載:
<?php
class shape{
function __call($name_function,$arguments){
if($name_function=='area'){
switch (count($arguments)){
//如果一個參數,,圓的面積
case 1:
return 3.14*$arguments[0];
//如果兩個參數,矩形面積
case 2:
return $arguments[0]*$arguments[1];
}
}
}
}
$s=new shape;
echo $s->area(2)."<br>";
echo $s->area(2,6);
輸出結果爲:6.28 12
2. 函數重寫:函數重寫與其他OOP編程語言相同。在函數重寫中,父類和子類應具有相同的函數名和參數數量。它用於替換子類中的父方法。覆蓋的目的是更改父類方法的行爲。具有相同名稱和相同參數的兩個方法稱爲覆蓋。實例:
class P{
function demo(){
echo "Parent";
}
}
class C extends P{
function demo(){
echo "<br>Child";
}
}
$p=new P;
$c=new C;
$p->demo();
$c->demo();
輸出結果爲:Parent Child