PHP中的extends關(guān)鍵字用于創(chuàng)建一個(gè)子類,從而繼承父類的屬性和方法。使用extends,可以方便地?cái)U(kuò)展代碼并減少冗余。下面將通過具體例子詳細(xì)講解在PHP中使用extends關(guān)鍵字實(shí)現(xiàn)繼承的相關(guān)知識(shí)。
在PHP代碼中,我們可以使用extends關(guān)鍵字創(chuàng)建一個(gè)子類,并從父類中繼承一些方法和屬性。例如:
class Person { protected $name; public function __construct($name) { $this->name = $name; } public function sayHello() { echo "Hello, my name is " . $this->name; } } class Employee extends Person { protected $position; public function __construct($name, $position) { parent::__construct($name); $this->position = $position; } public function getPosition() { return $this->position; } } $employee = new Employee('Amy', 'Developer'); $employee->sayHello(); echo $employee->getPosition();
在上面的代碼中,我們定義了一個(gè)Person類,該類具有一個(gè)受保護(hù)的$name屬性和一個(gè)公共的sayHello()方法。接著,我們創(chuàng)建了一個(gè)Employee類,該類從Person類繼承而來,并帶有一個(gè)新的protected $position屬性以及一個(gè)新的public getPosition()方法。
在Employee類的構(gòu)造函數(shù)中,用到了parent::__construct($name)方法,這個(gè)方法意思是調(diào)用父類Person的構(gòu)造函數(shù)。這樣,Employee對(duì)象被實(shí)例化后,就會(huì)擁有父類的屬性和方法以及子類自己的屬性和方法。
在Employee類實(shí)例化后,我們調(diào)用了sayHello()方法,這個(gè)方法是從父類Person繼承而來的。而getPosition()方法則是從Employee類中直接調(diào)用的方法。
通過繼承,我們可以避免寫出重復(fù)的代碼。例如:
class Animal { private $legs; public function __construct($legs) { $this->legs = $legs; } public function getLegs() { return $this->legs; } } class Bird extends Animal { public function __construct() { parent::__construct(2); } } class Dog extends Animal { public function __construct() { parent::__construct(4); } } $bird = new Bird(); $dog = new Dog(); echo $bird->getLegs(); // 輸出2 echo $dog->getLegs(); // 輸出4
在上面的代碼中,Animal類具有一個(gè)私有的$legs屬性和一個(gè)公共的getLegs()方法。接著,我們定義了兩個(gè)子類Bird和Dog,這些子類中沒有額外的屬性或方法,它們直接繼承了Animal類的屬性和方法。因此,當(dāng)實(shí)例化后,Bird類中的getLegs()方法將返回2,而Dog類中的getLegs()方法將返回4。
以上就是在PHP中使用extends關(guān)鍵字實(shí)現(xiàn)繼承的相關(guān)知識(shí)。通過繼承,我們可以方便地?cái)U(kuò)展代碼,避免重復(fù)寫出相同的代碼,減少代碼冗余,提高代碼的可讀性和可維護(hù)性。