亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

独山县| 旺苍县| 中方县| 奉化市| 连城县| 琼结县| 博白县| 乌兰浩特市| 柳江县| 新竹市| 德清县| 黔西县| 共和县| 平定县| 闽清县| 竹山县| 太康县| 广昌县| 永福县| 宜宾市| 桃源县| 耒阳市| 获嘉县| 临沭县| 海盐县| 丰原市| 丹棱县| 江西省| 鸡东县| 陇南市| 通江县| 朝阳市| 阳江市| 永康市| 武山县| 阳朔县| 安新县| 远安县| 湘西| 海安县| 东兰县|