static public
public $height = 180 ;
staticpublic function tell(){
tell(){ //靜態方法呼叫靜態屬性,使用self關鍵字
//echo $this->height;//錯誤。靜態方法不能呼叫非靜態屬性
//因為 $this代表實例化對象,而這裡是類,不知道 $this 代表哪個對象
}
public
function say(){
echo " ;
//普通方法呼叫靜態屬性,同樣使用self關鍵字
echo$this ->height;
}
}
$p1 = new Human(); new Human();
$p1 ->tell();
//物件可以存取靜態方法
echo $p1 ::
$name ; //物件存取靜態屬性。不能這麼訪問$p1->name
//因為靜態屬性的記憶體位置不在物件裡
Human::say(); //錯。 say()方法有$this時出錯;沒有$this時能出結果
//但php5.4以上會提示
?>
結論:1、靜態屬性的 靜態方法可以呼叫非靜態方法,使用self 關鍵字。 php裡,一個方法被self:: 後,它就自動轉變成靜態方法;
3、靜態方法不能呼叫非靜態屬性。因為非靜態屬性需要實例化後,就存放在物件裡;
以上就介紹了php物件導向中static靜態屬性和靜態方法的調用,包含了面向的內容,希望對PHP教學有興趣的朋友有幫助。
|