亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > PHP > 正文

PHP OPP機制和模式簡介(抽象類、接口和契約式編程)

2020-03-22 18:04:09
字體:
來源:轉載
供稿:網友
1.抽象類抽象類機制中總是要定義一個公共的基類,而將特定的細節留給繼承者來實現。通過抽象概念,可以在開發項目中創建擴展性很好的架構。任何一個類,如果它里面至少有一個方法是被聲明為抽象的,那么這個類就必須被聲明為抽象的。被定義為抽象的方法只是聲明了其調用方式(參數),不能定義其具體的功能實現。在類的聲明中使用 abstract 修飾符就可以將某個類聲明為抽象的。1.1方法原型(prototype)是指方法的定義中剔除了方法體之后的簽名。它包括存取級別、函數關鍵字、函數名稱和參數。他不包含({})或者括號內部的任何代碼。例如下面的代碼就是一個方法原型:復制代碼 代碼如下:
html' target='_blank'>public function prototypeName($protoParam)
繼承一個抽象類的時候,子類必須定義父類中的所有抽象方法;另外,這些方法的訪問控制必須和父類中一樣(或者更為寬松)。1.2關于抽象類 某個類只要包含至少一個抽象方法就必須聲明為抽象類
聲明為抽象的方法,在實現的時候必須包含相同的或者更低的訪問級別。
不能使用 new 關鍵字創建抽象類的實例。
被生命為抽象的方法不能包含函數體。
如果將擴展的類也聲明為抽象類,在擴展抽象類時,可以不用實現所有的抽象方法。(如果某個類從抽象類繼承,當它沒有實現基類中所聲明的所有抽象方法時,它就必須也被聲明為抽象的。)1.3使用抽象類復制代碼 代碼如下:
?php
abstract class Car
{
abstract function getMaxSpeend();
}class Roadster extends Car
{
public $Speend; public function SetSpeend($speend = 0)
{
$this- Speend = $speend;
}
public function getMaxSpeend()
{
return $this- Speend;
}
}class Street
{
public $Cars ;
public $SpeendLimit ; function __construct( $speendLimit = 200)
{
$this - SpeendLimit = $speendLimit;
$this - Cars = array();
}

protected function IsStreetLegal($car)
{
if ($car- getMaxSpeend() $this - SpeendLimit)
{
return true;
}
else
{
return false;
}
} public function AddCar($car)
{
if($this- IsStreetLegal($car))
{
echo 'The Car was allowed on the road.';
$this- Cars[] = $car;
}
else
{
echo 'The Car is too fast and was not allowed on the road.';
}
}
}$Porsche911 = new Roadster();
$Porsche911- SetSpeend(340);$FuWaiStreet = new Street(80);
$FuWaiStreet- AddCar($Porsche911);/**
*
* @result
*
* The Car is too fast and was not allowed on the road.[Finished in 0.1s]
*
*/
?
2.對象接口使用接口(interface),可以指定某個類必須實現哪些方法,但不需要定義這些方法的具體內容。接口是通過 interface 關鍵字來定義的,就像定義一個標準的類一樣,但其中定義所有的方法都是空的。接口中定義的所有方法都必須是公有,這是接口的特性。接口是一種類似于類的結構,可用于聲明實現類所必須聲明的方法。例如,接口通常用來聲明API,而不用定義如何實現這個API。 大多數開發人員選擇在接口名稱前加上大寫字母I作為前綴,以便在代碼和生成的文檔中將其與類區別開來。2.1使用接口和集成抽象類需要使用 extends 關鍵字不同的是,實現接口使用的是 implements 關鍵字。一個類可以實現多個接口,這時,我們需要用逗號將他們隔開。如果將某個類標記為實現了某個接口,但卻沒有實現這個借口的所有方法,將會拋出錯誤。2.2使用接口的案例復制代碼 代碼如下:
?php
abstract class Car
{
abstract function SetSpeend($speend = 0);
}interface ISpeendInfo
{
function GetMaxSpeend();
}class Roadster extends Car implements ISpeendInfo
{ public $Speend; public function SetSpeend($speend = 0)
{
$this- Speend = $speend;
} public function getMaxSpeend()
{
return $this- Speend;
}
}class Street
{ public $Cars ;
public $SpeendLimit ; function __construct( $speendLimit = 200)
{
$this - SpeendLimit = $speendLimit;
$this - Cars = array();
} protected function IsStreetLegal($car)
{
if ($car- getMaxSpeend() $this - SpeendLimit)
{
return true;
}
else
{
return false;
}
} public function AddCar($car)
{
if($this- IsStreetLegal($car))
{
echo 'The Car was allowed on the road.';
$this- Cars[] = $car;
}
else
{
echo 'The Car is too fast and was not allowed on the road.';
}
}
}
$Porsche911 = new Roadster();
$Porsche911- SetSpeend(340);$FuWaiStreet = new Street(80);
$FuWaiStreet- AddCar($Porsche911);/**
*
* @result
*
* The Car is too fast and was not allowed on the road.[Finished in 0.1s]
*
*/
?
3.instanceof 操作符instanceof 操作符是PHP5中的一個比較操作符。他接受左右兩邊的參數,并返回一個boolean值。這個操作符是用來確定對象的某個實例是否為特定的類型,或者是否從某個類型繼承,又或者實現類某個特定的接口。復制代碼 代碼如下:
echo $Porsche911 instanceof Car;
//result:1echo $Porsche911 instanceof ISpeendInfo;
//result:1
4.契約式編程契約式編程是指在編寫類之前實現聲明接口的一種編程實踐。這種方法在保證類的封裝性方面非常有用。使用契約式編程技術,我們可以在創建應用程序之前定義出視圖實現的功能,這和建筑師在修建大樓之前先畫好藍圖的做法非常相似。5.總結抽象類是使用 abstract 關鍵字聲明的類。通過將某個類標記為抽象類,我們可以推遲實現所聲明的方法。要將某個方法聲明為抽象方法,只要去掉包含所有大括號的方法實體,將方法聲明的代碼行用分號結束即可。抽象類不能直接實例化,他們必須被繼承。如果某個類從抽象類繼承,當它沒有實現基類中所聲明的所有抽象方法時,它就必須也被聲明為抽象的。在接口中,我們可以聲明沒有方法體的方法原型,這點與抽象類很相似。他們之間的區別在于,接口不能聲明任何具有方法體的方法;并且他們使用的語法也不一樣。為了將揭開規則強制加到某個類上,我們需要使用implements關鍵字,而不是extends關鍵字。有些情況下我們需要確定某個類是否是特定類的類型,或者是否實現了特定的接口。 instanceof 分成適合完成這個任務。instanceof 檢查三件事情:實例是否是某個特定的類型,實例是否從某個特定的類型繼承,實例或者他的任何祖先類是否實現類特定的接口。某些語言具有從多個類繼承的能力,這稱為多重繼承。PHP不支持多重繼承。想法,他提供了為一個類聲明多個接口的功能。接口在聲明類必須遵循的規則時非常有用。契約式編程技術使用這一功能來增強封裝性,優化工作流。PHP教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲在线免费观看| 国产在线视频一区| 欧美亚洲成人免费| 在线观看久久久久久| 国产精品一区二区三区久久| 97精品视频在线观看| 欧美一区二区三区四区在线| 疯狂做受xxxx高潮欧美日本| 欧美成年人视频| 久久久久国产精品www| 亚洲国产精久久久久久| 久久久精品一区| 欧美在线视频观看免费网站| 欧美日本在线视频中文字字幕| 亚洲天堂网站在线观看视频| 97视频在线观看视频免费视频| 欧洲亚洲免费视频| 日韩av在线天堂网| 91av在线国产| 亚洲免费伊人电影在线观看av| 日韩在线高清视频| 日本精品久久久久影院| 日韩精品一区二区视频| 91久久久亚洲精品| 亲爱的老师9免费观看全集电视剧| 午夜精品久久久久久久男人的天堂| 日韩在线观看视频免费| 中文字幕亚洲一区在线观看| 亚洲www视频| 国产精品久久久久久久久免费看| 最近2019中文免费高清视频观看www99| 日韩欧美中文字幕在线观看| 久久久99免费视频| 国模精品一区二区三区色天香| 欧美在线一级va免费观看| 国产精品久久91| 91午夜理伦私人影院| 伊人久久大香线蕉av一区二区| 在线观看欧美日韩国产| 久久视频在线免费观看| 日韩在线观看网址| 久久精品一区中文字幕| 欧美日韩午夜激情| 97在线视频精品| 午夜精品在线视频| 欧美电影院免费观看| 亚洲色无码播放| 亚洲国产91精品在线观看| 国产亚洲一区二区精品| 国产精品扒开腿做爽爽爽的视频| 成人午夜在线观看| 久久亚洲欧美日韩精品专区| www.久久久久久.com| 国产成人精品av| 国产精品电影网站| 亚洲精品视频网上网址在线观看| 国产一区二区三区视频免费| 日本一区二区不卡| 亚洲精品资源美女情侣酒店| 国产精品久久久久秋霞鲁丝| 97免费视频在线播放| 亚洲国产成人av在线| 性色av一区二区三区红粉影视| www.欧美视频| 精品国产一区二区三区久久久| 中文字幕在线视频日韩| 日韩免费黄色av| xxx成人少妇69| 欧美午夜精品久久久久久久| 久久99热这里只有精品国产| 91沈先生在线观看| 久久精品视频导航| 亚洲精品999| 亚洲一区二区三区在线视频| 国产一区二区三区视频在线观看| 亚洲黄页网在线观看| 欧美最猛性xxxx| 久久免费精品日本久久中文字幕| 超碰97人人做人人爱少妇| 正在播放欧美视频| 久久免费视频在线| 黄色一区二区在线| 欧美中在线观看| 日韩中文字幕在线看| 日韩在线观看你懂的| 538国产精品一区二区免费视频| 久久久久久伊人| 日本精品久久久| 国产精品青草久久久久福利99| 欧美在线观看网站| 久久午夜a级毛片| 欧美在线日韩在线| 国产欧美韩国高清| 在线视频免费一区二区| 亚洲欧美日韩综合| 精品美女国产在线| 国产v综合ⅴ日韩v欧美大片| 欧美激情区在线播放| 91欧美日韩一区| 欧美华人在线视频| 日韩中文有码在线视频| 亚洲欧洲在线免费| 在线播放国产一区中文字幕剧情欧美| 欧美日韩在线免费观看| 亚洲欧美日韩中文视频| 91精品国产91| 欧美成人全部免费| 最新国产精品亚洲| 欧美日韩国产精品| 国内精品久久久| 亚洲精品日韩激情在线电影| 久久久亚洲影院| 国产精品久久久精品| 欧美午夜片欧美片在线观看| 日韩a**中文字幕| 7m第一福利500精品视频| 日韩电影中文字幕在线| 中文字幕日韩欧美在线| 中文字幕在线看视频国产欧美在线看完整| 国产女人精品视频| 中日韩午夜理伦电影免费| 欧美夫妻性生活视频| 国产一区二区av| 亚洲精品xxx| 97精品免费视频| 91伊人影院在线播放| 日韩av手机在线看| 国产精品美腿一区在线看| 久久国产精品久久久久久| 国产日韩中文字幕| 欧美裸体xxxx极品少妇| 午夜免费在线观看精品视频| 欧美裸身视频免费观看| 亚洲国产成人精品久久久国产成人一区| 亚洲最大激情中文字幕| 成人午夜高潮视频| 北条麻妃久久精品| 少妇激情综合网| 国产精品一区二区久久国产| 精品视频久久久久久| 亚洲精品国产精品自产a区红杏吧| 国产精品久久久久久久久| 久久网福利资源网站| 欧美视频专区一二在线观看| 性色av一区二区三区| 欧美激情综合亚洲一二区| 日韩欧美国产网站| 久久精品国产69国产精品亚洲| 亚洲国产精品专区久久| 国产精品久久久久久久久久新婚| 欧美肥老妇视频| 亚洲影院在线看| 国产精品久久久久久久7电影| 国产精品91一区| 亚洲欧美三级在线| 精品中文字幕视频| 日韩成人在线视频观看| 成年人精品视频| 欧美猛少妇色xxxxx| 欧美日本高清视频| 久久久这里只有精品视频| 国产精品成人aaaaa网站| 欧美黑人视频一区| 成人网在线免费看|