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實例現(xiàn)在有兩個私有屬性,我可以理解為成員方法在哪個類中,私有屬性就調(diào)用哪個類的那么如果注釋掉父類中的 private $salary = 1000; 結(jié)果就會報錯:Cannot access private property ChildClass::$salary····不能訪問 ChildClass 類的私有屬性,我也可以理解,因為父類相對子類是類外,不能訪問私有屬性那么 protected 的屬性也在類外,怎么又能訪問了呢?如果理解為 子類繼承了父類的成員方法,所以訪問到了子類的 protected 屬性,那為什么又不能訪問子類的私有屬性呢?還是說:私有屬性是區(qū)分類的(從打印結(jié)果看出),訪問私有屬性時,只訪問本類中的私有屬性,而訪問public和protected的屬性,則根據(jù)對象實例具體的值決定?謝謝諸位,不知道我的描述清楚不
1 回答

蕪湖不蕪
TA貢獻(xiàn)1796條經(jīng)驗 獲得超7個贊
protected能訪問, 是因為protected規(guī)定繼承類可以訪問,外部不可以. 設(shè)定這個關(guān)鍵字就是為了干這個的
- 1 回答
- 0 關(guān)注
- 671 瀏覽
添加回答
舉報
0/150
提交
取消