繼承指的是一個類(子類)可以擁有另一個類(父類)的屬性和方法,兩者之間的關(guān)系用 extends
關(guān)鍵字來進行關(guān)聯(lián)。
一個子類只能擁有一個父類,不能繼承多個父類。
子類可以擁有父類的屬性和方法,也可以在子類中使用同名的屬性和方法來覆蓋(也叫重寫、重載)掉。
如果父類定義方法時使用了 final
關(guān)鍵字,則該方法不能被重寫。
除構(gòu)造方法之外,其他方法在進行重寫的時候,參數(shù)必須保持一致,否則報錯。
下面代碼中簡單的展示了繼承相關(guān)的內(nèi)容
// 父類
class Foo{
// 普通成員
public $name;
// 構(gòu)造函數(shù)
public function __construct($n){
$this->name = $n;
}
// 普通方法
public function say(string $str){
echo "<p>{$this->name} : $str</p>";
}
public function eat(){
echo "人是鐵,飯是鋼,一頓不吃餓得慌!";
}
// 這個方法不能被重寫
public final function profile(){
echo "<p>我叫:{$this->name}</p>";
}
}
// 子類
class Bar extends Foo{
// 普通成員
public $age = 10;
// 構(gòu)造函數(shù)
public function __construct($name, $age){
$this->name = $name;
$this->age = $age;
}
// 重寫方法
public function say(string $str){
echo "<p>{$this->name}[{$this->age}] : $str</p>";
}
}
// 實例化
$foobar = new Bar('iGuoji', 26);
// 父類方法
$foobar->profile();
// 重寫的方法
$foobar->say('你們好啊!');
// 隨便說說
$foobar->eat();
最終輸出內(nèi)容
我叫:iGuoji
iGuoji[26] : 你們好啊!
人是鐵,飯是鋼,一頓不吃餓得慌!