




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第6章面向?qū)ο蠡A(chǔ)知識(shí)01面向?qū)ο蟮幕靖拍?/p>
02類的聲明
03類的實(shí)例化04面向?qū)ο蟮姆庋b
05
面向?qū)ο蟮睦^承
06
static關(guān)鍵字
07
抽象類和接口
08
面向?qū)ο髮?shí)現(xiàn)多態(tài)09
面向?qū)ο蟮钠渌P(guān)鍵字
10
面向?qū)ο蟮某S媚g(shù)方法
1面向?qū)ο蟮幕靖拍钪饕獌?nèi)容
類
對(duì)象
面向?qū)ο蟮奶攸c(diǎn)
010203類
類是屬性(靜態(tài)特征)和方法(動(dòng)態(tài)特征)的集合,是面向?qū)ο缶幊谭绞降暮诵暮突A(chǔ),通過(guò)類可以將零散的用于實(shí)現(xiàn)某項(xiàng)功能的代碼進(jìn)行有效管理。對(duì)象
對(duì)象就是類的實(shí)例化,實(shí)例化創(chuàng)建的數(shù)據(jù)庫(kù)連接類,調(diào)用數(shù)據(jù)庫(kù)連接類中的方法,完成與數(shù)據(jù)庫(kù)的連接操作。面向?qū)ο蟮奶攸c(diǎn)(1)封裝性:就是將一個(gè)類的使用和實(shí)現(xiàn)分開,只保留有限的接口(方法)與外部聯(lián)系。(2)繼承性:是派生類(子類)自動(dòng)繼承一個(gè)或多個(gè)基類(父類)中的屬性與方法,并可以重寫或添加新的屬性或方法。繼承這個(gè)特性簡(jiǎn)化了對(duì)象和類的創(chuàng)建,增加了代碼的可重用性。(3)多態(tài)性:是指同一個(gè)類的不同對(duì)象,使用同一個(gè)方法可以獲得不同的結(jié)果。多態(tài)性增強(qiáng)了軟件的靈活性和重用性。2類的聲明主要內(nèi)容
定義類
成員屬性
0102
成員常量
成員方法
0304在PHP中,使用關(guān)鍵字class加類名的方式定義類,然后用大括號(hào)包裹類體,在類體中定義類的屬性和方法。定義類<?phpclassStudent{
//…}?>權(quán)限修飾符class類名{
類體;}語(yǔ)法定義ConnDB類成員屬性
在類中直接聲明的變量稱為屬性。成員屬性的聲明必須用關(guān)鍵字來(lái)修飾,例如,public、protected、private等。classConnDB{
private
var$dbtype;
private
var$host;
var$user;
var$pwd;
var$dbname;
var$debug;
var$conn; }成員常量
在類中定義常量使用關(guān)鍵字const。constPI=3.14159;常量的輸出不需要實(shí)例化對(duì)象,直接由類名+常量名調(diào)用即可。類名::常量名格式成員方法
在類中聲明的函數(shù)稱為成員方法。<?phpclassConnDB{privatevar$dbtype;privatevar$host;
public
functionConnDB(){
//方法體
}}$connobj1=newConnDB();//對(duì)象$connobj2=newConnDB(); $connobj3=newConnDB();?>3
類的實(shí)例化主要內(nèi)容
對(duì)象的創(chuàng)建
訪問(wèn)類中的屬性和方法
“$this”和“::”操作符010203
構(gòu)造方法和析構(gòu)方法04對(duì)象的創(chuàng)建$變量名=new類名稱([參數(shù)]);語(yǔ)法PHP中使用關(guān)鍵字new來(lái)創(chuàng)建一個(gè)對(duì)象。一個(gè)類可以實(shí)例化多個(gè)對(duì)象,每個(gè)對(duì)象都是獨(dú)立的。$connobj1=newConnDB();$connobj2=newConnDB(); $connobj3=newConnDB();訪問(wèn)類中的成員$變量名=new類名稱([參數(shù)]);$變量名->成員屬性=值;$變量名->成員屬性;$變量名->成員方法;語(yǔ)法使用特殊的運(yùn)算符號(hào)“->”訪問(wèn)類中的成員?!?this”和“::”操作符
使用$this變量可以引用該對(duì)象的其他方法和屬性,并使用“->”作為連接符。
“$this”操作符$this->屬性名;$this->方法名;“$this”和“::”操作符
操作符“::”可以在沒(méi)有聲明任何實(shí)例的情況下訪問(wèn)類中的成員。
“::”操作符關(guān)鍵字::變量名/常量名/方法名語(yǔ)法這里的關(guān)鍵字分為三種情況:parent關(guān)鍵字:可以調(diào)用父類中的成員變量、成員方法和常量。parent::PIself關(guān)鍵字:可以調(diào)用當(dāng)前類中的靜態(tài)成員和常量。self::PI類名:可以調(diào)用本類中的變量、常量和方法。類名::常量構(gòu)造方法和析構(gòu)方法
構(gòu)造方法function__construct([mixedargs[,…]]){ //方法體}語(yǔ)法構(gòu)造方法和析構(gòu)方法
析構(gòu)方法function__destruct(){ //方法體,通常是完成一些在對(duì)象銷毀前的清理任務(wù)}語(yǔ)法4面向?qū)ο蟮姆庋b主要內(nèi)容
公共成員關(guān)鍵字public
私有成員關(guān)鍵字private
保護(hù)成員關(guān)鍵字protected010203公共成員關(guān)鍵字public
公共成員就是可以公開的、沒(méi)有必要隱藏的數(shù)據(jù)信息??梢栽诔绦虻娜魏蔚攸c(diǎn)(類內(nèi)、類外)被其他的類和對(duì)象調(diào)用。子類可以繼承和使用父類中所有的公共成員。對(duì)于成員方法,如果沒(méi)有寫關(guān)鍵字,那么默認(rèn)就是public。私有成員關(guān)鍵字private
被private關(guān)鍵字修飾的變量和方法,只能在所屬類的內(nèi)部被調(diào)用和修改,不可以在類外被訪問(wèn),即使是子類也不可以。
classBook{ private$bookName="PHP從入門到實(shí)踐"; publicfunctionsetName($bookName){ $this->bookName=$bookName; } publicfunctiongetName(){ return$this->bookName; }}$book=newBook(); //實(shí)例化對(duì)象$book$book->setName("PHP自學(xué)視頻教程");echo"正確操作私有變量:";echo$book->getName();echo"<br>錯(cuò)誤操作私有變量:";echo$book->bookName; //直接訪問(wèn)私有變量出現(xiàn)錯(cuò)誤保護(hù)成員關(guān)鍵字protected
被protected修飾的類成員,可以在本類和子類中被調(diào)用,其他地方則不可以被調(diào)用。classCar{ protected$carName="奧迪系列";}classSmallCarextendsCar{ publicfunctionsay(){ echo"調(diào)用父類中的屬性:".$this->carName; }}$car=newSmallCar();$car->say();echo$car->carName; //直接訪問(wèn)保護(hù)變量出現(xiàn)錯(cuò)誤
5
面向?qū)ο蟮睦^承主要內(nèi)容
繼承關(guān)鍵字extends
子類調(diào)用父類的成員方法0102
覆蓋父類方法03繼承關(guān)鍵字extendsclass子類名稱extends父類名稱{ //子類成員變量列表
function成員方法(){ //子類成員方法
//方法體
} //省略其他方法}語(yǔ)法子類調(diào)用父類的成員方法
通過(guò)parent::關(guān)鍵字也可以在子類中調(diào)用父類中的成員方法。self::子類自己的成員方法parent::父類的成員方法(參數(shù));語(yǔ)法覆蓋父類方法
覆蓋父類方法的關(guān)鍵就是在子類中創(chuàng)建與父類中相同的方法,包括方法名稱、參數(shù)和返回值類型。如果父類和子類中都定義了構(gòu)造方法,當(dāng)子類的對(duì)象被創(chuàng)建后,將調(diào)用子類的構(gòu)造方法,而不會(huì)調(diào)用父類的構(gòu)造方法。說(shuō)明6
static關(guān)鍵字主要內(nèi)容
靜態(tài)屬性
靜態(tài)方法0102靜態(tài)屬性
靜態(tài)屬性就是使用關(guān)鍵字static修飾的成員屬性。類名稱::$靜態(tài)屬性名稱語(yǔ)法如果要在類內(nèi)部的成員方法中訪問(wèn)靜態(tài)屬性,那么在靜態(tài)屬性的名稱前加上操作符“self::”即可。靜態(tài)方法
靜態(tài)方法就是通過(guò)關(guān)鍵字static修改的成員方法。類名稱::靜態(tài)方法名稱([參數(shù)1,參數(shù)2,……])語(yǔ)法靜態(tài)方法在對(duì)象不存在的情況下可以使用類名來(lái)訪問(wèn)。在靜態(tài)方法中只能訪問(wèn)靜態(tài)成員,而在非靜態(tài)方法中可以使用類名或self關(guān)鍵字訪問(wèn)靜態(tài)成員。注意7
抽象類和接口主要內(nèi)容
抽象類
接口0102抽象類抽象類使用abstract關(guān)鍵字來(lái)聲明。abstractclassS{ //抽象類的成員變量列表
abstractfunction成員方法1(參數(shù)); abstractfunction成員方法2(參數(shù)); }ClassAextendsS{}語(yǔ)法接口
接口的聲明interface接口名稱{ //常量成員
//抽象方法;}語(yǔ)法
接口類通過(guò)interface關(guān)鍵字來(lái)聲明。interfaceOne{ constCONSTANT='CONSTANTvalue'; functionFunOne();}echoOne::CONSTANT;接口
接口的應(yīng)用
在子類中繼承接口使用implements關(guān)鍵字。如果要實(shí)現(xiàn)多個(gè)接口的繼承,那么每個(gè)接口之間使用逗號(hào)“,”連接。8
面向?qū)ο髮?shí)現(xiàn)多態(tài)主要內(nèi)容
通過(guò)繼承實(shí)現(xiàn)多態(tài)
通過(guò)接口實(shí)現(xiàn)多態(tài)0102通過(guò)繼承實(shí)現(xiàn)多態(tài)【實(shí)例】創(chuàng)建一個(gè)抽象類Type,用于表示各種交通方法,然后讓子類繼承這個(gè)type類。通過(guò)接口實(shí)現(xiàn)多態(tài)
【實(shí)例】定義接口Type,并定義一個(gè)空方法go_type()。然后定義Type_car和Type_Bus子類繼承接口Type。最后通過(guò)instanceof關(guān)鍵字檢查對(duì)象是否屬于接口Type。9
面向?qū)ο蟮钠渌P(guān)鍵字主要內(nèi)容
final關(guān)鍵字
clone關(guān)鍵字0102
instanceof關(guān)鍵字03final關(guān)鍵字被final修飾過(guò)的方法在子類中不可以進(jìn)行重寫,也不可以被覆蓋。finalclassclass_name{finalfunctionmethod_name()}格式clone關(guān)鍵字
克隆對(duì)象$克隆對(duì)象名稱=clone$原對(duì)象名稱;語(yǔ)法
對(duì)象的克隆可以通過(guò)關(guān)鍵字clone來(lái)實(shí)現(xiàn)。clone關(guān)鍵字
克隆副本對(duì)象的初始化
魔術(shù)方法“__clone()”可以為克隆后的副本對(duì)象重新初始化。它不需要任何參數(shù),其中自動(dòng)包含$this和$that兩個(gè)對(duì)象的引用。instanceof關(guān)鍵字
instanceof操作符可以檢測(cè)當(dāng)前對(duì)象是屬于哪個(gè)類。ObjectNameinstanceofClassName語(yǔ)法10
面向?qū)ο蟮某S媚g(shù)方法主要內(nèi)容
__set()和__get()方法
__isset()和__unset()方法
__call()方法010203
__toString()方法04
__autoload()方法05__set()和__get()方法
__set()方法:在程序運(yùn)行過(guò)程中為私有的成員屬性設(shè)置值,它不需要任何返回值。__get()方法:在程序運(yùn)行過(guò)程中,在對(duì)象的外部獲取私有成員屬性的值。_
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度范文大全固定資產(chǎn)租賃合同多功能版
- 2025年度博物館陳列室裝修設(shè)計(jì)與施工合同
- 2025年面包粉線行業(yè)深度研究分析報(bào)告
- Unit 6 Enjoy Cycling Topic 3 Bicycle riding is good exercise Section C 教學(xué)設(shè)計(jì)-2024-2025學(xué)年仁愛(ài)科普版英語(yǔ)八年級(jí)下冊(cè)
- Starter Unit 3 Welcome Section A 1a-2d 教學(xué)設(shè)計(jì) 2024-2025學(xué)年人教版(2024)七年級(jí)英語(yǔ)上冊(cè)
- 壓力容器非標(biāo)項(xiàng)目可行性研究報(bào)告
- 2025年社交電商項(xiàng)目建議書
- 保險(xiǎn)分期合同范本
- 垃圾項(xiàng)目可行性報(bào)告
- 2025年雙綠肥項(xiàng)目可行性研究報(bào)告
- 村委會(huì)會(huì)議簽到表
- 哲學(xué)與人生全套課件146P
- 中考物理復(fù)習(xí)交流
- 敬老院設(shè)備采購(gòu)?fù)稑?biāo)方案(技術(shù)方案)
- 充電樁采購(gòu)安裝售后服務(wù)方案
- 《旅行社條例》和《旅行社管理?xiàng)l例》對(duì)比解讀
- 柳宗元抑郁而堅(jiān)貞的一生
- 鄉(xiāng)鎮(zhèn)人大代表選舉結(jié)果情況報(bào)告單
- BOPP雙向拉伸薄膜及膠帶生產(chǎn)項(xiàng)目環(huán)境影響報(bào)告
- 頻譜儀N9020A常用功能使用指南
- 天津高考英語(yǔ)詞匯3500
評(píng)論
0/150
提交評(píng)論