class FatherClass{ // private $salary = 1000;
private $salary = 1000; public function showInfo()
{ echo $this->phone . '<br/>'; echo $this->salary . '<br/>';
}
}class ChildClass extends FatherClass{ protected $phone = '13987654321'; private $salary = 20000;
}
$child = new ChildClass();
$child->showInfo();echo '<pre>';
print_r($child);
輸出:139876543211000ChildClass Object
(
[phone:protected] => 13987654321
[salary:ChildClass:private] => 20000
[salary:FatherClass:private] => 1000)疑問:child實例現在有兩個私有屬性,我可以理解為成員方法在哪個類中,私有屬性就調用哪個類的那么如果注釋掉父類中的 private $salary = 1000; 結果就會報錯:Cannot access private property ChildClass::$salary····不能訪問 ChildClass 類的私有屬性,我也可以理解,因為父類相對子類是類外,不能訪問私有屬性那么 protected 的屬性也在類外,怎么又能訪問了呢?如果理解為 子類繼承了父類的成員方法,所以訪問到了子類的 protected 屬性,那為什么又不能訪問子類的私有屬性呢?還是說:私有屬性是區分類的(從打印結果看出),訪問私有屬性時,只訪問本類中的私有屬性,而訪問public和protected的屬性,則根據對象實例具體的值決定?謝謝諸位,不知道我的描述清楚不
- 1 回答
- 0 關注
- 655 瀏覽
添加回答
舉報
0/150
提交
取消