作用:控制訪問許可權,修飾屬性,方法
許可權控制符:public(公開的) protected(受保護的) private(私有的)
區別:
- public 類內,類外,可以訪問
- protected 類內,子類的類內,可以訪問
- private 只有當前類的類內,可以訪問
關於繼承:
- 子類可以繼承父類私有屬性,不能繼承私有方法
- 子類繼承自父類的屬性方法,子類必須和父類的修飾相同,或者更鬆弛。
- 父類為public,則子類必須為public。
- 父類為protected,子類需為public 或 protected。
- 父類為private,則子類可為public protected private
編寫父類Father 和 子類Son
<?php
class Father{
public $name;
protected $salary;
private $money; //私房錢
public function __construct($name, $salary, $money)
{
$this->name = $name;
$this->salary = $salary;
$this->money = $money;
}
public function getName()
{
return $this->name;
}
protected function getSalary()
{
return $this->salary;
}
private function getMoney()
{
return $this->salary;
}
public function getInfo()
{
// 所有屬性在方法內都能訪問
echo $this->name . "的薪水一個月" . $this->salary;
echo "存款" . $this->money;
echo "<br/>";
}
}
class Son extends Father
{
//private $salary; //控制許可權必須必父類更鬆弛,可以宣告為protected 和 public
private $age;
public function getFatherInfo()
{
//子類不能呼叫父類的屬性,可以呼叫父類的方法獲取屬性
parent::getName();
parent::getSalary();
//parent::getMoney(); //子類不能呼叫父類私有方法
//$this->getMoney(); //子類不能繼承父類私有方法,私有屬性可以繼承(透過訪問繼承的公開方法,即可訪問到私有屬性)
}
}
//父類
$father1 = new Father('father1', 5000, 100000);
//類內public protected private屬性都可以訪問
$father1->getInfo();
//類外只能訪問 public
echo $father1->name;
// echo $father1->salary; //受保護屬性類外不能訪問
// echo $father1->money; //私有屬性類外不能訪問
//子類繼承父類
$son1 = new Son('son1', 2000, 0);
//類內public protected private屬性都可以訪問
$son1->getInfo();
//類外只能訪問 public
echo $son1->name;
// echo $son1->salary; //受保護屬性類外不能訪問
// echo $son1->money; //私有屬性類外不能訪問
複製程式碼,即可執行。 謝謝你的瀏覽,如有錯誤,歡迎指正哈!!!
本作品採用《CC 協議》,轉載必須註明作者和本文連結