PHP中函數覆蓋和函數重載

函數重載和覆蓋(也叫重寫)是PHP中的OOP(面向對象)特性。在函數重載中,多個函數可以具有相同的方法名但參數的數量或類型不同。但是在函數重寫的情況下,多個函數將具有相同的方法名和參數數量。

  1. 函數重載: 函數重載包含相同的函數名稱,該函數根據參數的數量和類型執行不同的任務。在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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章