PHP面向對象多態性的應用


多態是面向對象的三大特性中除封裝和繼承之外的另一重要特性。它展現了動態綁定的功能,也稱為“同名異式”。多態的功能可讓軟件在開發和維護時,達到充分的延伸性。事實上,多態最直接的定義是讓具有繼承關系的不同類對象,可以對相同名稱的成員函數調用,產生不同反應效果。所謂多態性就是指一段程序能夠處理多種類型對象的能力,在PHP中,多態值指的就是方法的重寫。方法重寫是指一個子類中可以重新修改父類中的某些方法,使其具有自己的特征。重寫要求子類的方法和父類的方法名稱相同,這可以通過聲明抽象類或是接口來規范。
我們通過計算機USB設備的應用來介紹一下面向對象中的多態性,目前USB設置的種類僅我們自己用過的我想就有十幾種吧。例如USB鼠標、USB鍵盤、USB存儲設備等,這些計算機的外部設備都是通過USB接口連接到計算機以后,被計算機調用並啟動運行的。也就是計算機正常運行的同時,沒插入一種不同USB設備,就為計算機擴展一樣功能,這正是我們所說的多態特征。那么為什么每個USB設備不一樣,但都可以被計算機應用呢?那是因為每個USB設置都要遵守電腦USB接口的開發規范,都具有相同的能被計算機加載到並啟用的方法,但運行各自相應的功能。這也正是我們對多態的定義,假設我們有一個主程序已經開發完成,需要后期由其他開發人員為其擴展一些功能,但需要在不改動主程序的基礎上就可以加載到這些擴展的功能模塊,其實也就是為程序開發一些插件。這就需要在主程序中需要為擴展的插件程序寫好接口規范,然后每個插件只有按照規范去實現自己的功能,才能被主程序應用到。在計算機中應用USB設備的程序設計如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
//定義一個USB接口,讓每個USB設備都遵守這個規范
interface USB{
function run();
}
 
class Computer{
//計算機類中的一個方法可以應用任何一種USB設備
function useUSB( $usb ){
$usb ->run();
}
}
 
$computer = new Computer;
$computer ->useUSB( new Ukey()); //為計算機插入一個usb鍵盤設備,並運行
$computer ->useUSB( new Umouse()); //為計算機插入一個usb鼠標設備,並運行
$computer ->useUSB( new Ustore()); //為計算機插入一個usb存儲設備,並運行
?>

下面的代碼根據USB接口定義的規范,實現了USB鍵盤、USB鼠標和USB存儲三個設備,當然可以去實現更多的USB設置,都按照自己設備的功能重寫了run()方法,所以插入計算機啟動運行后每個USB設備都有自己的形態。代碼如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
//擴展一個USB鍵盤設備,實現usb接口
class Ukey implements USB {
function run(){
echo "運行USB鍵盤設備<br>" ;
}
}
//擴展一個USB鼠標設備,實現usb接口
class Umouse implements USB {
function run(){
echo "運行USB鼠標設備<br>" ;
}
}
 
//擴展一個USB存儲設備,實現usb接口
class Ustore implements USB {
function run(){
echo "運行USB存儲設備<br>" ;
}
}
?>
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM