亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

大神能否解釋下 “受保護的屬性與私有屬性不允許外部調用,在類的成員方法內部是可以調用的”這句話?何為外部調用和內部調用啊?

$car?=?new?Car();
echo?$car->name;???//調用對象的屬性
echo?$car->color;??//錯誤?受保護的屬性不允許外部調用
echo?$car->price;??//錯誤?私有屬性不允許外部調用

正在回答

5 回答

其實就是封裝,這樣做比較安全,不容易給人修改,查查封裝就右以理解了

1 回復 有任何疑惑可以回復我~

這個要配合前面定義的類來理解

class?Car?{
????//定義公共屬性
????public?$name?=?'汽車';

????//定義受保護的屬性
????protected?$corlor?=?'白色';

????//定義私有屬性
????private?$price?=?'100000';
}

在calss Car的花括號{}里面調用就是內部調用,在{}外面調用就是外部調用,只有public可以外部調用,所以才會出現第二個和第三個錯誤的現象!

1 回復 有任何疑惑可以回復我~
class?A?{
????protected?$name?=?'aaa';
????protected?function?getName()?{
????????return?'hello';
????}
????public?function?say()?{
????????return?$this->getName();
????}
}

$a?=?new?A();
echo?$a->name;????????//?error
echo?$a->getName();???//?error
echo?$a->say();???????//?success

wish you understand !

2 回復 有任何疑惑可以回復我~

在定義類的時候,有一個花括號{},在花括號里調用就屬于內部調用,在花括號外面調用就屬于外部調用。

4 回復 有任何疑惑可以回復我~

首先類的屬性有三種:public 、protected、private。

public可以在任何地方被調用,而受保護屬性和私有屬性則不一樣。

私有屬性private不允許外部調用,指的的是該屬性只能在你聲明的類中調用,你聲明了Car這個類,就是只能在class Car{}中調用,離開這個類,就不能調用了。

如果實在要調用,可以使用友元函數來進行調用。

而受保護屬性protected不僅可以在你聲明的類中調用,還可以在它的子類中調用。

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

大神能否解釋下 “受保護的屬性與私有屬性不允許外部調用,在類的成員方法內部是可以調用的”這句話?何為外部調用和內部調用???

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號