91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PHP 靜態變量與方法不具備多態性

發布時間:2020-07-21 05:37:07 來源:網絡 閱讀:539 作者:GIpanda 欄目:web開發

封裝,繼承,多態是面向對象三大基本特性。這里翻譯一個在 stackoverflow 上看到的說明 php 靜態變量與方法不具備多態性的例子。


PHP 中用 static 關鍵字來定義靜態方法與變量。


首先來看靜態方法

class Person{

	public static function status(){
		self::getStatus();
	}

	protected static function getStatus(){
		echo "Person is alive";
	}
}

class Deseased extends Person{

    protected static function getStatus(){
    	echo "Person is deseased";
    }
}


Person::status();
echo "<br>";
Deseased::status();


此處兩個輸出的結果都是 "Person is alive" ,這是因為 self 的作用域在定義類時被確定,而不是在執行類時。因此即使 我們在 Deseased 中調用 status, getStatus 在 Deseased 中被重載,self 始終指向 Person 中的 getStatus 函數。



對于靜態變量,同理

class Person{

	static $status = 'alive';

	public function getStatus(){
		echo "Person is ".self::$status;
	}
}

class Deseased extends Person{

	static $status = 'deseased';

    /*public function getStatus(){
    	echo "Person is ".self::$status;
    }*/
}


Person::getStatus();
echo "<br>";
Deseased::getStatus();

輸出結果依舊是兩個 "Person is alive", 要想得到 "Person is deseased" 結果,只需把注釋部分去掉即可



綜上所述,php 通過在定義類時就確定 self 的作用域,使得靜態變量和方法不具備多態性。




向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

惠来县| 汾西县| 闻喜县| 宜川县| 武平县| 平舆县| 文登市| 老河口市| 汉中市| 晋城| 思茅市| 资源县| 南昌县| 伊金霍洛旗| 香港| 雷山县| 从化市| 临江市| 商洛市| 亳州市| 宣威市| 阳信县| 黄龙县| 镇江市| 临高县| 滨海县| 荆门市| 宜兰市| 石楼县| 将乐县| 萍乡市| 邓州市| 巴南区| 安丘市| 钦州市| 昌宁县| 镇平县| 新巴尔虎右旗| 贵溪市| 海兴县| 麻栗坡县|