方法重載(重寫)/方法覆蓋、魔術函數實現
方法重載
函數名不一樣透過函數的參數數量或參數型別不同,達到呼叫同一個函數名,但是可以區分不同的函數
class A{
public function test1(){
echo "test1" ;}
public function test1($a){
echo "test1 hhh";}
}
重載
$a=newA();
$a->test1();
$a->test1(222);
上面的這種用法是不對的
魔術函數 方法重載實作
echo "接受一個參數";}
public function test1($p){
echo "接受二個參數";}
}
提供一個__call
__call
__call是它一個物件呼叫某個方法,而該方法不存在,則係統會自動呼叫__call
function __call($method,$p){
if($method=="test1"){
if(count($p)==1){
$this->test1($p);
}else if(count( $p)==2){
$this->test2($p);
}
}
}
$a->test(1);
$a->test(1,2);
魔術函數
__set,__get,__construct,__destruct,__call,__isset,__unset
,__FILE__輸出檔名
,__DIR__,
__CLASS__輸出類名
方法重寫/方法覆蓋(overload)
public $name;
protected $price;
function cry(){
echo "不知道";}
}
class Dog extends Animal{
//覆蓋
function cry(){
echo "小狗";}
}
class Pig extends Animal{
//覆蓋小肉;}
}
$dog1=new Dog();
$dog1->cry();
$pig1->cry();
?>
關於重寫:
當一個父類別知道所有的子類別都有一個方法但是父類別不能確定該方法究竟如何寫,可以讓子類別去覆蓋這個方法
2.如果子類別要求呼叫父類別的某個方法(public/protected)則可以使用parent::方法名稱(參數...),父類別名稱::方法名稱(參數...)
3.實現方法覆蓋的時候,存取修飾符可不一樣,但是必須滿足子類別的存取範圍>=父類別的存取範圍
多態體現在什麼地方

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)