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

溫馨提示×

溫馨提示×

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

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

如何在php中實現多態

發布時間:2021-06-02 15:47:56 來源:億速云 閱讀:142 作者:Leah 欄目:編程語言

本篇文章給大家分享的是有關如何在php中實現多態,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。


多態性是指相同的操作或函數、過程可作用于多種類型的對象上并獲得不同的結果。不同的對象,收到同一消息將可以產生不同的結果,這種現象稱為多態性。

多態性允許每個對象以適合自身的方式去響應共同的消息。多態性增強了軟件的靈活性和重用性。

在面向對象的軟件開發中,多態性是最為重要的部分之一。面向對象編程并不只是將相關的方法與數據簡單的結合起來,而是采用面向對象編程中的各種要素將現實生活中的各種情況清晰的描述出來。這一小節將對面向對象編程中的多態性作詳細的講解。

什么是多態

多 態(Polymorphism)按字面上意思理解就是“多種形狀”。可以理解為多種表現形式,也即“一個對外接口,多個內部實現方法”。在面向對象的理論 中,多態性的一般定義為:同一個操作作用于不同的類的實例,將產生不同的執行結果。也即不同類的對象收到相同的消息時,將得到不同的結果。

在實際的應用開發中,采用面向對象中的多態主要在于可以將不同的子類對象都當作一個父類來處理,并且可以屏蔽不同子類對象之間所存在的差異,寫出通用的代碼,做出通用的編程,以適應需求的不斷變化。

多態實現條件

多態的實現有三個條件:首先必須有繼承,即必須有父類(或基類)及其派生的子類。其次必須有父類的引用指向子類的對象,這是實現多態最重要的一個條件。最后必須有方法的重寫,即子類必須對父類的某些方法根據自己的需求進行重寫,方法名和參數都是相同的。

php實現多態的方法:

1、通過實現接口實現多態

下面的例子中,UserAdmin類的靜態方法,要求一個User類型的參數。

在后面的使用中,傳遞了一個實現了User接口的類NormalUser的實例。代碼成功運行。

<?
interface User{ // User接口
	public function  getName();
	public function setName($_name);
}
class NormalUser implements User { // 實現接口的類.
	private $name;
	public function getName(){
		return $this->name;
	}
	public function setName($_name){
		$this->name = $_name;
	}
}
class UserAdmin{ //操作.
	public static function  ChangeUserName(User $_user,$_userName){
		$_user->setName($_userName);
	}
}
$normalUser = new NormalUser();
UserAdmin::ChangeUserName($normalUser,"Tom");//這里傳入的是 NormalUser的實例.
echo $normalUser->getName();
?>

程序運行結果:

Tom

2、通過繼承關系實現多態

利用接口與組合,在一個類中將另外一個類設置成屬性來模擬多重繼承,通過繼承關系實現多態。

下面是類和子類的關系。

<?
class User{ // User接口
	public function  getName(){}
}
class NormalUser extends User { // 繼承自User類
	private $name;
	public function getName(){
		return $this->name;
	}
	public function setName($_name){
		$this->name = $_name;
	}
}
class UserAdmin{ //操作.
	public static function  ChangeUserName(User $_user,$_userName){
		$_user->setName($_userName);
	}
}
$normalUser = new NormalUser();
UserAdmin::ChangeUserName($normalUser,"Tom");//這里傳入的是 NormalUser的實例.
echo $normalUser->getName();
?>

程序運行結果:

Tom

以上就是如何在php中實現多態,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

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

php
AI

博白县| 南平市| 河东区| 章丘市| 仙游县| 松潘县| 大庆市| 曲周县| 上饶市| 临沧市| 宁河县| 建德市| 丰都县| 玉门市| 板桥市| 和平区| 青冈县| 绥棱县| 长春市| 五大连池市| 朝阳区| 二连浩特市| 灵璧县| 新巴尔虎右旗| 遂平县| 凤山县| 德安县| 苏尼特左旗| 九江县| 玛沁县| 彭州市| 灵石县| 从江县| 逊克县| 安岳县| 芜湖县| 廉江市| 彰化市| 海门市| 永州市| 禄丰县|