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

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

請問可以用類名直接調用靜態屬性嗎?

在類外,請問可以用類名直接調用靜態屬性嗎?

正在回答

3 回答

<?php
header("content-type:text/html;charset=utf-8");
class?Human{
?static?public?$name?=?"李四";?????????//定義靜態屬性
?public?$height?=?175;????????
?static?public?function?tell(){
?echo?self::$name;??????????????//靜態方法調用靜態屬性,使用self關鍵詞
?????//echo?$this->height;????????//錯。靜態方法不能調用非靜態屬性
?????//因為?$this代表實例化對象,而這里是類,不知道?$this?代表哪個對象
?}
?public?function?say(){
?echo?self::$name?.?"我說話了";
?????????????????????????????????????//普通方法調用靜態屬性,同樣使用self關鍵詞
?echo?$this->height;
?}
}
$p1?=?new?Human();
$p1->say();?
$p1->tell();????????????????????//對象可以訪問靜態方法
echo?$p1::$name;??????????????//對象訪問靜態屬性。不能這么訪問$p1->name
????????????????????????????????//因為靜態屬性的內存位置不在對象里
Human::say();????????????????????//錯。say()方法有$this時出錯;沒有$this時能出結果
????????????????????????????????//但php5.4以上會提示
?>

結論:

(1)、靜態屬性不需要實例化即可調用。因為靜態屬性存放的位置是在類里,調用方法為"類名::屬性名";
(2)、靜態方法不需要實例化即可調用。同上
(3)、靜態方法不能調用非靜態屬性。因為非靜態屬性需要實例化后,存放在對象里;
(4)、靜態方法可以調用非靜態方法,使用 self 關鍵詞。php里,一個方法被self:: 后,它就自動轉變為靜態方法;


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

傻了,不能用類名調用靜態屬性,只能調用靜態方法

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

可以的

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

舉報

0/150
提交
取消

請問可以用類名直接調用靜態屬性嗎?

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

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

幫助反饋 APP下載

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

公眾號

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