中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

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

哈密市| 衡东县| 宁阳县| 南充市| 井研县| 三明市| 台中县| 金寨县| 米易县| 大同县| 汤阴县| 南投县| 卢湾区| 新安县| 剑阁县| 宜兰县| 土默特右旗| 唐河县| 雷波县| 百色市| 义马市| 讷河市| 南平市| 磐石市| 榆社县| 丰宁| 内江市| 津市市| 龙南县| 上饶县| 文安县| 台前县| 九台市| 安乡县| 精河县| 彭泽县| 文山县| 乌拉特后旗| 申扎县| 迁西县| 临邑县|