方法重載(重寫(xiě))/方法覆蓋、魔術(shù)函數(shù)實(shí)現(xiàn)
Oct 24, 2016 am 12:00 AM
方法重載
函數(shù)名不一樣通過(guò)函數(shù)的參數(shù)個(gè)數(shù)或者參數(shù)類(lèi)型不同,達(dá)到調(diào)用同一個(gè)函數(shù)名,但是可以區(qū)分不同的函數(shù)
class A{
public function test1(){
echo "test1";}
public function test1($a){
echo "test1 hhh";}
}
重載
$a=newA();
$a->test1();
$a->test1(222);
上面的這種用法是不對(duì)的
魔術(shù)函數(shù) 方法重載實(shí)現(xiàn)
class A{
public function test1($p){
echo "接受一個(gè)參數(shù)";}
public function test1($p){
echo "接受二個(gè)參數(shù)";}
}
提供一個(gè)__call
__call是它一個(gè)對(duì)象調(diào)用某個(gè)方法,而該方法不存在,則系統(tǒng)會(huì)自動(dòng)調(diào)用__call
function __call($method,$p){
var_dump($p);
if($method=="test1"){
if(count($p)==1){
$this->test1($p);
}else if(count($p)==2){
$this->test2($p);
}
}
}
$a=newA();
$a->test(1);
$a->test(1,2);
魔術(shù)函數(shù)
__set,__get,__construct,__destruct,__call,__isset,__unset
__LINE__輸出多少行
,__FILE__輸出文件名
,__DIR__,
__CLASS__輸出類(lèi)名
方法重寫(xiě)/方法覆蓋(overload)
class Animal{
public $name;
protected $price;
function cry(){
echo "不知道";}
}
class Dog extends Animal{
//覆蓋
function cry(){
echo "小狗";}
}
class Pig extends Animal{
//覆蓋
function cry(){
echo "小豬";}
}
$dog1=new Dog();
$dog1->cry();
$pig=1new Pig();
$pig1->cry();
?>
關(guān)于重寫(xiě):
當(dāng)一個(gè)父類(lèi)知道所有的子類(lèi)都有一個(gè)方法但是父類(lèi)不能確定該方法究竟如何寫(xiě),可以讓子類(lèi)去覆蓋這個(gè)方法
1.要實(shí)現(xiàn)重寫(xiě),要求子類(lèi)的那個(gè)方法的名字和參數(shù)列表一模一樣,但是并不要求參數(shù)名稱(chēng)一樣
2.如果子類(lèi)要求調(diào)用父類(lèi)的某個(gè)方法(public/protected)則可以使用parent::方法名(參數(shù)...),父類(lèi)名::方法名(參數(shù)...)
3.在實(shí)現(xiàn)方法覆蓋的時(shí)候,訪問(wèn)修飾符可不一樣,但是必須滿(mǎn)足子類(lèi)的訪問(wèn)范圍>=父類(lèi)的訪問(wèn)范圍
多態(tài)體現(xiàn)在什么地方
當(dāng)子類(lèi)沒(méi)用覆蓋父類(lèi)的方法則$call->cry()調(diào)用的是父類(lèi),子類(lèi)覆蓋父類(lèi)的方法則調(diào)用自己的cry( )

熱AI工具

Undress AI Tool
免費(fèi)脫衣服圖片

Undresser.AI Undress
人工智能驅(qū)動(dòng)的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover
用于從照片中去除衣服的在線(xiàn)人工智能工具。

Clothoff.io
AI脫衣機(jī)

Video Face Swap
使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

熱門(mén)文章

熱工具

記事本++7.3.1
好用且免費(fèi)的代碼編輯器

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

禪工作室 13.0.1
功能強(qiáng)大的PHP集成開(kāi)發(fā)環(huán)境

Dreamweaver CS6
視覺(jué)化網(wǎng)頁(yè)開(kāi)發(fā)工具

SublimeText3 Mac版
神級(jí)代碼編輯軟件(SublimeText3)