面向?qū)ο髮W(xué)習(xí)類_第1頁
面向?qū)ο髮W(xué)習(xí)類_第2頁
面向?qū)ο髮W(xué)習(xí)類_第3頁
面向?qū)ο髮W(xué)習(xí)類_第4頁
面向?qū)ο髮W(xué)習(xí)類_第5頁
已閱讀5頁,還剩9頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、一認(rèn)識(shí)面向?qū)ο?、什么是面向?qū)ο?,什么是類、使用CLASS創(chuàng)建一個(gè)類、類的成員屬性和成員方法、使用new函數(shù)對(duì)象實(shí)例化起初,“面向?qū)ο蟆笔菍V冈诔绦蛟O(shè)計(jì)中采用封裝、繼承、抽象等設(shè)計(jì)方法??墒?,這個(gè)定義顯然不能再適合現(xiàn)在情況。面向?qū)ο蟮乃枷胍呀?jīng)涉及到軟件開發(fā)的各個(gè)方面。如,面向?qū)ο蟮姆治?OOA,ObjectOrientedAnalysis),面向?qū)ο蟮脑O(shè)計(jì)(OOD,ObjectOrientedDesign)、以及我們經(jīng)常說的面向?qū)ο蟮木幊虒?shí)現(xiàn)(OOP,ObjectOrientedProgram)。面向?qū)ο蟮囊兀?.抽象性,2.封裝性,3.共享性,4.強(qiáng)調(diào)對(duì)象結(jié)構(gòu)而不是程序結(jié)構(gòu)什么是類:我們可以

2、理解成一個(gè)功能集合菜單,我們通過類來實(shí)現(xiàn)生成我們的方法類的成員屬性和成員方法classMyPcpublic$name;/為了讓大家養(yǎng)成良好的習(xí)慣和今后對(duì)PHP6的適應(yīng),建議使用public而不是varvar$price;functionvod()returnPHP100視頻教程;$pc1=newMyPc();$pc1-name;2、創(chuàng)建一個(gè)和多個(gè)對(duì)象、對(duì)象中的$this關(guān)鍵字、初始化對(duì)象_construct()、析構(gòu)函數(shù)_destruct()對(duì)象中的$this關(guān)鍵字$this關(guān)鍵字是用來訪問當(dāng)前對(duì)象中的對(duì)象屬性和對(duì)象方法的系統(tǒng)變量(我們可以理解為$this是在對(duì)象中特殊的一種使用構(gòu)造函數(shù)和變量

3、的方法)classMyPcpublic$name;public$price;functionvod()$this-name;$this-vod();$this僅能在當(dāng)前對(duì)象中使用初始化對(duì)象_construct()我們?cè)趧?chuàng)建一個(gè)類有時(shí)候需要初始化一些操作,這個(gè)時(shí)候我們需要使用初始化函數(shù),在PHP5中有兩種初始化方法:1、原PHP4中我們需要建立一個(gè)與類名稱相同的一個(gè)對(duì)象方法:classMyPcfunctionMyPC()/初始化操作3、在PHP5中繼承了PHP4但為了更好的針對(duì)面向?qū)ο箝_發(fā)有了固定函數(shù):4、classMyPcfunction_construct()/初始化操作4、析構(gòu)函數(shù)_des

4、truct()能夠在對(duì)象釋放時(shí)自動(dòng)被調(diào)用的方法被稱為析構(gòu)函數(shù)(規(guī)則:后進(jìn)先出)PHP4支持析構(gòu)函數(shù),通過登錄在PHP運(yùn)行終止時(shí)用register_shutdown_function()調(diào)用的函數(shù),只有類似的實(shí)行方法。PHP5正式支持析構(gòu)函數(shù),能夠在類中指定對(duì)象釋放時(shí)的動(dòng)作。我們可以理解為垃圾回收機(jī)制當(dāng)對(duì)象內(nèi)部的操作執(zhí)行完畢的時(shí)候,_destruct()被調(diào)用,然后對(duì)象所使用的內(nèi)存被釋放出來。1.封裝關(guān)鍵字:public,protected,private2.封裝相關(guān)函數(shù):_set(),_get()封裝是把一些相關(guān)的屬性和行為隱藏起來,從而得到保護(hù)和安全1.封裝關(guān)鍵字2.public表示全局,類

5、內(nèi)部外部子類都可以訪問;protected表示受保護(hù)的,只有本類或子類或父類中可以訪問;private表示私有的,只有本類內(nèi)部可以使用;classMyPcpublic$name;/全局屬性任何位置都可以引用protected$price;/保護(hù)屬性只有本類或子類或父類中可以訪問privatefunctionvod()/私有屬性只有本類內(nèi)部可以使用$this-name;2.封裝相關(guān)函數(shù):_set(),_get()某些特定操作的時(shí)候需要訪問和賦值封裝的類型,這個(gè)時(shí)候我們就需要其他的函數(shù)幫我們完成這些操作,PHP為我們提供了個(gè)方法名:_set(),_get()_set()取得當(dāng)前類中封裝過私有屬性或

6、者方法重新執(zhí)行或賦值操作_set($Name,$Value)_get()取得當(dāng)前類中封裝過屬性或方法并轉(zhuǎn)換成共有屬性_get()四、繼承關(guān)鍵字:extends、PHP繼承的規(guī)則、基類方法重載和父類方法訪問、繼承關(guān)鍵字:extendsPHP類的繼承,我們可以理解成共享被繼承類的內(nèi)容。PHP中使用extends單一繼承的方法,請(qǐng)切忌!(非C+多繼承)被繼承的類我們叫做父類(基類)繼承者成為子類(派生類)、PHP繼承的規(guī)則依次被繼承,class3擁有class1、class2所以功能和屬性,避免方法和屬性重名、基類方法重載和父類方法訪問因?yàn)閷儆谙蛳吕^承的原理,基類不能使用派生類里內(nèi)容,這個(gè)時(shí)基類的一

7、些方法不能完成我們的一些派生類的功能,我們就可以進(jìn)行方法重載避免了,新建方法帶來的混亂。方法重載我們也可以理解方法覆蓋,在派生類里使用與基類方法重名的方法名稱執(zhí)行重載重載時(shí)我們需要調(diào)用原始基類內(nèi)容,再增加新內(nèi)容,我們可以使用基類名:方法名稱五、抽象關(guān)鍵字:abstract、抽象方法和抽象類的定義、抽象類和方法使用規(guī)則、抽象關(guān)鍵字:abstract抽象就是無法確切的說明,但又有一定的概念或者名稱,在PHP中聲明一個(gè)抽象類或者方法我們需要使用adstract關(guān)鍵字、抽象方法和抽象類的定義一個(gè)類中至少有一個(gè)方法是抽象的,我們稱之為抽象類。所以如果定義抽象類首先定義抽象方法。、類中至少有一個(gè)抽象方法、

8、抽象方法不允許有、抽象方法前面必須要加abstractabstractclassclass1abstractfunctionfun1();、抽象類和方法使用規(guī)則抽象類的幾個(gè)特點(diǎn):、不能被實(shí)例化,只能被繼承、繼承的派生類當(dāng)中要把所以抽象方法重載才能實(shí)例化abstractclasscl1abstractfunctionfun1();abstractfunctionfun2();繼承,重載所有抽象方法:classcl2extendscl1functionfun1()functionfun2()六、關(guān)鍵字:final、關(guān)鍵字:self、關(guān)鍵字:static、關(guān)鍵字:const、關(guān)鍵字:final用來定

9、義類和方法的一個(gè)重要關(guān)鍵字,當(dāng)定義類的時(shí)候該類將不能被繼承,當(dāng)用來定義方法的時(shí)候該方法將不能被重載。finalclassclass1/該類將不能被繼承finalfunctionfun1()/該方法將不能被重載、關(guān)鍵字:self用來用類訪問當(dāng)前類中的內(nèi)容的關(guān)鍵字,類似與$this關(guān)鍵字,但$this是需要類實(shí)例化以后才可以使用,self可以直接訪問當(dāng)前類中的內(nèi)部成員self:類內(nèi)部成員(屬性或者方法)=注意:因?yàn)闆]有實(shí)例化類訪問內(nèi)部屬性或者方法是沒有意義的,所以self一般用來訪問類中的:靜態(tài)成員,常量,或者其他定義內(nèi)容、關(guān)鍵字:static用來定義類的靜態(tài)屬性或方法,可以在類未被實(shí)例化時(shí)使用,

10、靜態(tài)屬性單獨(dú)占用內(nèi)存而不會(huì)因創(chuàng)建多個(gè)對(duì)象時(shí)而導(dǎo)致同樣的方法或者屬性重復(fù)占用。classclass1static$name;staticfunctionfun1()/靜態(tài)方法內(nèi)部禁止出現(xiàn)非靜態(tài)內(nèi)容靜態(tài)成員Const只能修飾類當(dāng)中類內(nèi)部訪問靜態(tài)成員:類名稱:靜態(tài)成員或self:類外部訪問靜態(tài)成員類名稱:靜態(tài)成員、關(guān)鍵字:const用來定義類中的常量,類似PHP外部定義常量的關(guān)鍵字define();的成員屬性!classclass1constNAME;/注意事項(xiàng):1、建議大寫常量2、常量不使用$符號(hào)functionfun1()七、接口的介紹與創(chuàng)建關(guān)鍵字:interface、接口的引用與規(guī)范關(guān)鍵字:i

11、mplements接口:一種成員屬性全部為抽象的特殊抽象類,在程序中同為規(guī)范的作用抽象類和接口的區(qū)別:抽象類:接口:、類中至少有一個(gè)抽象方法、抽象方法前需加abstract、類中全部為抽象方法、抽象方法前不用加abstract、接口抽象方法屬性為public、成員屬性必須為常量接口有自己的創(chuàng)建關(guān)鍵字:interface與普通類的創(chuàng)建類似interfacedemo/聲明接口類constNAME=名字;/對(duì)象屬性必須為常量adstract而接口可以使functionFun1();/對(duì)象方法全部為抽象方法,前面無須加functionFun2();接口引用區(qū)別與之前我們的學(xué)的類繼承關(guān)鍵字extends

12、,繼承只能是單一性,用關(guān)鍵字:implements多個(gè)引用并用逗號(hào)”,”分開。設(shè)已有接口demo,demo2,demo31、普通類引用接口例子:classmypcimplementsdemo,demo2,demo32、抽象類引用接口例子:abstractclassmypcimplementsdemo,demo2,demo32、接口的引用與規(guī)范(先繼承后接口,單繼承多接口)3、繼承父類引用接口并存例子:classmypcextendsrootimplementsdemo,demo2,demo3、接口與接口繼承:interfacedemo3extendsdemo八1、多態(tài)的介紹與優(yōu)勢(shì)2、運(yùn)算符:i

13、nstanceof、多態(tài)的簡(jiǎn)單應(yīng)用多態(tài)性是繼抽象和繼承后,面向?qū)ο笳Z言的第三個(gè)特征。從字面上理解,多態(tài)的意思是“多種形態(tài)”,簡(jiǎn)單來說,多態(tài)是具有表現(xiàn)多種形態(tài)的能力的特征,在OO中是指“語言具有根據(jù)對(duì)象的類型以不同方式處理。優(yōu)勢(shì):OOP的模式并不僅僅是把很多函數(shù)和功能集合起來,目的而是使用類,繼承,多態(tài)的方式描述我們生活中的一種情況。從而使得我們的代碼更具有“物”的意義。幫助我們減少一些重復(fù)性的代碼和條件語句的判斷。2、運(yùn)算符:instanceofPHP一個(gè)類型運(yùn)算符。instanceof用來測(cè)定一個(gè)給定的對(duì)象是否來自指定的對(duì)象類。classAclassB$thing=newA;if($thin

14、ginstanceofA)echoA;if($thinginstanceofB)echoB;九1、對(duì)象描述的配置2、對(duì)象方法的異常處理、克隆對(duì)象的應(yīng)用、自動(dòng)載入對(duì)象的方法1、對(duì)象描述的配置方法名_tostring()我們可以直接打印對(duì)象句柄,從而獲得該方法的基本信息或其他內(nèi)容。classMyfunction_tostring()echo我所要顯示的內(nèi)容;$p=newMy();echo$p;輸出結(jié)果:我所要顯示的內(nèi)容2、對(duì)象方法的異常處理方法名_call($funname,$arr_value)調(diào)用一些不存在的對(duì)象方法的異常處理,使程序繼續(xù)正常運(yùn)行。classMyfunction_call($n,$v)echo錯(cuò)誤的方法名.$n;echo錯(cuò)誤的參數(shù).Print_r($v);/因?yàn)閰?shù)會(huì)有多個(gè)所要用數(shù)組的方式保存,打印的時(shí)候也要就用print_r輸出、克隆對(duì)象的應(yīng)用方法名_clone()關(guān)鍵字clone通過克隆的方式我們可以在內(nèi)存中生成兩個(gè)一樣的對(duì)象或升級(jí)原對(duì)象。classMyfunction_clone()echo克隆時(shí)自動(dòng)調(diào)用的函數(shù);區(qū)別:$a=newMy()$b=$a;/內(nèi)存

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論