php多态实现,PHP面向对象之旅:PHP的多态
多態這個概念,在Java中指的是變量可以指向的對象的類型,可是變量聲明類型的子類。對象一旦創建,它的類型是不變的,多態的是變量。
在PHP5中,變量的類型是不確定的,一個變量可以指向任何類型的數值、字符串、對象、資源等。我們無法說PHP5中多態的是變量。
我們只能說在PHP5中,多態應用在方法參數的類型提示位置。
一個類的任何子類對象都可以滿足以當前類型作為類型提示的類型要求。所有實現這個接口的類,都可以滿足以接口類型作為類型提示的方法參數要求。簡單的說,一個類擁有其父類、和已實現接口的身份。
通過實現接口實現多態
下面的例子中,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
通過繼承關系實現多態
下面是類和子類的關系。
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多态实现,PHP面向对象之旅:PHP的多态的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java协作开发,Java开发学习笔记之
- 下一篇: php 循环curl,PHP实现的cur