1. 程式人生 > >php中類的繼承與程式碼複用

php中類的繼承與程式碼複用

/**
 * 類的繼承
 * 1. 繼承是為了程式碼複用
 * 2. php只支援單繼承
 * 3. 父類也叫超類,基類,子類也叫派生類
 */

 

//宣告一個父類
class ParentClass{

    public $name;
    protected $course;
    private $salary;
    const SITE_NAME = 'china';
    //構造方法
    public function __construct($name,$course,$salary)
    {
        $this->name = $name;
        $this->course = $course;
        $this->salary = $salary;
    }
    public function getCourse()
    {
        //受保護的成員,可以在子類中訪問
        return $this->course;
    }

    //訪問本類私有成員
    public function getSalary()
    {
        return $this->salary;
    }
}

//建立子類,繼承父類ParentClass
class ChildClass extends  ParentClass{
    //什麼都不寫,仍然可以訪問父類中所有除了pravte外的成員

    //子類中允許重寫父類中的同名方法, (多型)
    public function getCourse()
    {
        return $this->name.'所學的課程是'.parent::getCourse();
    }
    //訪問本類私有成員
    public function getSalary()
    {
        return $this->salary;
    }
}

$child = new ChildClass('小龍女','php',50000);
echo '姓名:'.$child->name.'<br>';
echo '課程:'.$child->getCourse().'<br>';
//echo '工資:'.$child->getSalary().'<br>';  //不可訪問,如果子類沒有getsalary()方法,可以直接使用父類的方法訪問私有變數
echo ChildClass::SITE_NAME;