繼承是PHP5面象對象程序設計的重要特性之一,它是指建立一個新的派生類,從一個或多個先前定義的類中繼承數據和函數,而且可以重新定義或加進新數據和 函數,從而建立了類的層次或等級。
繼承性是子類自動共享父類數據結構和方法的機制,這是類之間的一種關系。在定義和實現一個類的時候,可 以在一個已經存在的類的基礎之上來進行,把這個已經存在的類所定義的內容作為自己的內容,並加入若干新的內容。
舉例:
比如你現在已經有一個“人”這個類了,這個 類里面有兩個成員屬性“姓名和年齡”以及還有兩個成員方法“說話的方法和走路的方法“, 如果現在程序需要一個學生的類, 因為學生的也是人, 所以學生也有成員屬性“姓名和年齡”以及成員方法“說話的方法和走路的方法“,這個時候你就可以讓學生類來繼承人這個類, 繼承之后,學生類就會把人類里面的所有的屬性都繼承過來, 就不用你再去重新聲明一遍這些成員屬性和方法了, 因為學生類里面還有所在學校的屬性和學習的方法,所以在你做的學生類里面有繼承自人類里面的屬性和方法之外在加上學生特有的”所在學校屬性“和”學習的方 法“, 這樣一個學生類就聲明完成了, 繼函我們也可以叫作“擴展”, 從上面我們就可以看出,學生類對人類進行了擴展, 在人類里原有兩個屬性和兩個方法的基礎上加上一個屬性和一個方法擴展出來一個新的學生類。
1.父類
2.子類
子類可以繼承父類的一切
特點:單繼承,一個子類只能有一個父類,一個父類可以派生多個子類
class Ren { public $name; function Say() { echo $this->name."正在講話"; } } class China extends Ren //子類對父類的繼承 { } $c = new China(); $c->Say(); var_dump($c);
結果:
可拓展性:
class Ren { public $name; function Say() { echo $this->name."正在講話"; } } class China extends Ren { function Run() //拓展父類 { echo $this->name."正在跑步"; } } $c = new China(); $c->Say(); $c->Run();
結果:
重寫:override
class Ren { public $name; function Say() { echo $this->name."正在講話"; } } class China extends Ren { //子類對父類的方法進行重寫 function Say() { echo "你好"; } function Run() //拓展 { echo $this->name."正在跑步"; } } class America extends Ren { //子類對父類的方法進行重寫 function Say() { echo "hello"; } }
結果:
繼承及拓展:
class Ren { public $name; function Say() { echo $this->name."正在講話"; } } class China extends Ren { //子類對父類的方法進行重寫 function Say() { parent::Say(); //兩個冒號 echo "你好"; } } $c = new China(); $c->Say();
結果: