首頁  >  文章  >  後端開發  >  php物件導向中static靜態屬性與靜態方法的調用

php物件導向中static靜態屬性與靜態方法的調用

WBOY
WBOY原創
2016-07-29 09:01:00782瀏覽

這裡分析了php物件導向中static靜態屬性和靜態方法的呼叫。關於它們的調用(能不能調用,怎麼樣調用),需要弄清楚了他們在內存中存放位置,這樣就非常容易理解了。靜態屬性、方法(包括靜態與非靜態)在記憶體中,只有一個位置(而非靜態屬性,有多少實例化對象,就有多少個屬性)。

實例:

?

1

2

9

10

11

12

13

14

15

16

17

18

191

header (

"content-type:text/html;charset=utf-8"

);

class

Human{

 

staticpublic

 public$height

= 180 ;

 

static

publicfunctiontell(){  tell(){ //靜態方法呼叫靜態屬性,使用self關鍵字

 //echo $this->height;//錯誤。靜態方法不能呼叫非靜態屬性 //因為 $this代表實例化對象,而這裡是類,不知道 $this 代表哪個對象                                                                   

 }  public

functionsay(){  echo ";

  //普通方法呼叫靜態屬性,同樣使用self關鍵字

 

echo

$this->height;

 } }

$p1= newHuman(); newHuman();

$p1->tell();

//物件可以存取靜態方法 echo$p1::

$name;//物件存取靜態屬性。不能這麼訪問$p1->name

//因為靜態屬性的記憶體位置不在物件裡

Human::say();//錯。 say()方法有$this時出錯;沒有$this時能出結果 //但php5.4以上會提示

?>

結論:

1、靜態屬性的靜態方法可以呼叫非靜態方法,使用self 關鍵字。 php裡,一個方法被self:: 後,它就自動轉變成靜態方法;3、靜態方法不能呼叫非靜態屬性。因為非靜態屬性需要實例化後,就存放在物件裡; 以上就介紹了php物件導向中static靜態屬性和靜態方法的調用,包含了面向的內容,希望對PHP教學有興趣的朋友有幫助。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn