資源描述:
《php面向?qū)ο笾橄箢悺⒔涌凇酚蓵?huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫(kù)。
1、php面向?qū)ο笾橄箢悺⒔涌趗抽象類為什么設(shè)計(jì)抽象類這個(gè)技術(shù)?1.在實(shí)際開(kāi)發(fā)中,我們可能有這樣一種類,是其它類的父類,但是它本身并不需要實(shí)例化,主要用途是用于讓子類來(lái)繼承,這樣可以到達(dá)代碼復(fù)用.同時(shí)利于項(xiàng)目設(shè)計(jì)者,設(shè)計(jì)類./在實(shí)現(xiàn)方法覆蓋的時(shí)候,訪問(wèn)修飾符可以不一樣//但是必須滿足:子類的訪問(wèn)范圍>=父類的訪問(wèn)范圍abstractclassAnimal{public$name;protected$age;//這個(gè)方法沒(méi)有方法體,這個(gè)方法主要是為了讓子類去實(shí)現(xiàn).abstractpublicfunctioncry();}classCatextendsAnimal{publicfunc
2、tioncry(){echo"貓貓叫喚..";}}//創(chuàng)建一個(gè)子類實(shí)例$cat1=newCat();$cat1->cry();使用抽象類的注意事項(xiàng):1.基本用法abstractclass類名{//方法[]//屬性[]}2.如果一個(gè)類使用abstract來(lái)修飾,則該類就是抽象類,如果一個(gè)方法被abstract修飾,則該方法就是抽象方法【抽象方法就不能有方法體.】3.抽象類可以沒(méi)有抽象方法.同時(shí)還可以有實(shí)現(xiàn)了的方法.=父類的訪問(wèn)范圍abstractclassAnimal{public$name=
3、"abc";protected$age;//這個(gè)方法沒(méi)有方法體,這個(gè)方法主要是為了讓子類去實(shí)現(xiàn).abstractpublicfunctioncry();publicfunctiongetName(){return$this->name;}}classCatextendsAnimal{publicfunctioncry(){echo"貓貓叫喚..";}}//創(chuàng)建一個(gè)子類實(shí)例$cat1=newCat();$cat1->cry();echo$cat1->getName();1.如果一個(gè)類中,只要有抽象方法,則該類必須聲明為abstractabstractclassA{abstractf
4、unctiontest();}echo"ok";2.如果A類繼承了一個(gè)抽象類B,則要求A類實(shí)現(xiàn)從B類繼承的所有抽象方法案例://這是一個(gè)抽象類abstractclassA{abstractfunctiontest();}//B類要么自己抽象,或者實(shí)現(xiàn)從A類繼承的抽象方法.classBextendsA{functiontest(){echo"我實(shí)現(xiàn)A:test()";}}echo"hello";u接口
5、相機(jī)類,讓它去實(shí)現(xiàn)接口//1.當(dāng)一個(gè)類實(shí)現(xiàn)了某個(gè)接口,則要求該類必須實(shí)現(xiàn)這個(gè)接口的所有方法classCameraimplementsiUsb{publicfunctionstart(){echo"相機(jī)開(kāi)始工作";}publicfunctionstop(){echo"相機(jī)停止工作...";}}//編寫手機(jī)類classPhoneimplementsiUsb{publicfunctionstart(){echo"手機(jī)開(kāi)始工作";}publicfunctionstop(){echo"手機(jī)停止工作...";}}//如何使用$camera1=newCamera();$camera1->sta
6、rt();$camera1->stop();echo"
";//手機(jī)對(duì)象$phone1=newPhone();$phone1->start();$phone1->stop();?>1.接口的使用基本語(yǔ)法interface接口名{//屬性//方法}?接口的方法都不能有方法體如何去實(shí)現(xiàn)接口class類名implements接口名1,接口2.{}接口它的作用就是聲明一些方法,供其它類來(lái)實(shí)現(xiàn).接口還體現(xiàn)編程中我們希望的效果高內(nèi)聚低耦合的特點(diǎn):u深入討論接口-interface1.定規(guī)范2.定下規(guī)范,讓別的程序員來(lái)實(shí)現(xiàn)3.當(dāng)多個(gè)類,他們之間是平級(jí)的關(guān)系.這些類都會(huì)去實(shí)現(xiàn)某個(gè)功能,只
7、是實(shí)現(xiàn)的方式不一樣.接口的細(xì)節(jié)1.不能去實(shí)例化一個(gè)接口interfaceiUsb{}$a=newiUsb();(錯(cuò)誤!!!)2.接口中的所有方法,都不能有方法體3.一個(gè)類可以去實(shí)現(xiàn)多個(gè)接口語(yǔ)法:class類名implements接口1,接口2{}4.接口中可以有屬性,但是必須是常量,并且是publicinterfaceiUsb{constA=90;}echo"ok".iUsb::A;5.接口的方法是public【默認(rèn)就是public】,不能是protected和private舉例