国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > PHP > 正文

實(shí)例講解PHP面向?qū)ο笾鄳B(tài)

2020-03-22 19:22:14
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
什么是多態(tài)性?多態(tài)性是繼數(shù)據(jù)庫(kù)抽象和繼承后,html' target='_blank'>面向?qū)ο?/u>語(yǔ)言的第三個(gè)特征。多態(tài)即多種形態(tài),具有表現(xiàn)多種形態(tài)的能力特征。在面向?qū)ο笾斜硎靖鶕?jù)對(duì)象的類型以不同方式處理。多態(tài)性允許每個(gè)對(duì)象以適合自身的方式去響應(yīng)共同的消息。多態(tài)性增強(qiáng)了軟件的靈活性和重用性。如我們創(chuàng)建一個(gè)doing()方法,如果是學(xué)生則打印上課,如是公司職員則打印上班。普通做法使用if判斷
復(fù)制代碼 代碼如下:
/**
* PHP多態(tài)性
* 瓊臺(tái)博客
*/

// 定義學(xué)生類
class student{
public function cla(){
echo "學(xué)生工正在上課! br /
}
}

// 定義職員類
class office{
public function Wor(){
echo "職員正在上班! br /
}
}

// 判斷對(duì)象類型方法
function doing($obj){
if($obj instanceof student){
$obj- cla();
}elseif($obj instanceof office){
$obj- wor();
}else{
echo "沒(méi)有這個(gè)對(duì)象!";
}
}

doing(new student()); // 學(xué)生正在上課
doing(new office()); // 職員正在上班
以上結(jié)果輸出:學(xué)生正在上課
職員正在上班這種普通方法有個(gè)缺點(diǎn),就是對(duì)象如果很多,那么if..else..很長(zhǎng),不靈活。

多態(tài)性做法定義一個(gè)公共抽象方法,所有子類繼承它。
復(fù)制代碼 代碼如下:
/**
* PHP多態(tài)性
* 瓊臺(tái)博客
*/

// 定義一個(gè)公共類
class pub{
protected function working(){
echo "本方法需要在子類中重載!";
}
}

// 定義學(xué)生類,繼承公共類pub
class student extends pub{
public function working(){
echo "學(xué)生工正在上課! br /
}
}

// 定義職員類,繼承公共類pub
class office extends pub{
public function working(){
echo "職員正在上班! br /
}
}

// 判斷對(duì)象類型方法
function doing($obj){
if($obj instanceof pub){
$obj- working();
}else{
echo "沒(méi)有這個(gè)對(duì)象!";
}
}

doing(new student()); // 學(xué)生正在上課
doing(new office()); // 職員正在上班
這就是多態(tài)的特性,靈活重用。

其它做法從多態(tài)性的實(shí)現(xiàn)方式來(lái)看,無(wú)非就規(guī)范了每個(gè)類都要重載父類的一個(gè)方法,從而達(dá)到統(tǒng)一效果。而我們?cè)诙x類的時(shí)候,自行加上統(tǒng)一的方法也可行。因此以上例子也可以這么實(shí)現(xiàn):
復(fù)制代碼 代碼如下:
/**
* PHP多態(tài)性
* 瓊臺(tái)博客
*/

// 定義學(xué)生類
class student{
// 定義統(tǒng)一的方法pub
public function pub(){
echo "學(xué)生工正在上課! br /
}
}

// 定義職員類
class office{
// 定義統(tǒng)一的方法pub
public function pub(){
echo "職員正在上班! br /
}
}

// 判斷對(duì)象類型方法
function doing($obj){
if($obj){
// 調(diào)用類的統(tǒng)一方法
$obj- pub();
}else{
echo '沒(méi)有這個(gè)對(duì)象';
}
}

doing(new student()); // 學(xué)生正在上課
doing(new office()); // 職員正在上班
當(dāng)然,以上的例子不能說(shuō)明多態(tài)性就能使用這樣的方式搞定,畢竟多態(tài)性在復(fù)雜的程序設(shè)計(jì)中,它能有效的達(dá)到靈活重用的特性。多態(tài)性也可以理解為一種程序設(shè)計(jì)方式,而程序設(shè)計(jì)最終目的無(wú)非就是:靈活,多態(tài),重用,高效。
PHP教程

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 郓城县| 西平县| 页游| 菏泽市| 英吉沙县| 莱州市| 根河市| 青川县| 郑州市| 承德县| 昌图县| 奉新县| 海淀区| 麻栗坡县| 麦盖提县| 日土县| 达州市| 吉水县| 册亨县| 常山县| 图们市| 夹江县| 抚松县| 广南县| 彭泽县| 麻江县| 忻州市| 会东县| 鹿泉市| 桂林市| 和硕县| 天峨县| 时尚| 武威市| 尚志市| 扶风县| 远安县| 杨浦区| 云阳县| 镇安县| 招远市|