php面向對象之抽象類、接口_第1頁
php面向對象之抽象類、接口_第2頁
php面向對象之抽象類、接口_第3頁
php面向對象之抽象類、接口_第4頁
php面向對象之抽象類、接口_第5頁
免費預覽已結束,剩余3頁可下載查看

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、php 面向對象之抽象類、接口抽象類為什么設計抽象類這個技術?1. 在實際開發中,我們可能有這樣一種類 ,是其它類的父類,但是它本身并不需要實例化 ,主要用途是用于讓子類來繼承,這樣可以到達代碼復用 . 同時利于項目設計者,設計類 ./在實現方法覆蓋的時候,訪問修飾符可以不一樣/但是必須滿足 : 子類的訪問范圍 =父類的訪問范圍abstract class Animalpublic $name;protected $age;/這個方法沒有方法體 ,這個方法主要是為了讓子類去實現.abstract public function cry();class Cat extends Animalpub

2、licfunction cry()echo 貓貓叫喚 .;/創建一個子類實例$cat1=new Cat();$cat1-cry();使用抽象類的注意事項 :1. 基本用法abstract class 類名 /方法 /屬性 2. 如果一個類使用 abstract 來修飾,則該類就是抽象類 , 如果一個方法被abstract 修飾,則該方法就是抽象方法【抽象方法就不能有方法體 .】3. 抽象類可以沒有抽象方法 .同時還可以有實現了的方法 .=父類的訪問范圍abstract class Animalpublic $name=abc;protected $age;/這個方法沒有方法體 ,這個方法主要是

3、為了讓子類去實現.abstract public function cry();public function getName()return $this-name;class Cat extends Animalpublicfunction cry()echo 貓貓叫喚 .;/創建一個子類實例$cat1=new Cat();$cat1-cry();echo $cat1-getName();4. 如果一個類中,只要有抽象方法,則該類必須聲明為abstractabstract class Aabstract function test();echo ok;5. 如果 A 類繼承了一個抽象類B,則

4、要求 A 類實現從 B 類繼承的所有抽象方法案例 :/這是一個抽象類abstract class Aabstract function test();/B 類要么自己抽象,或者實現從A 類繼承的抽象方法 .class B extends Afunction test()echo 我實現 A:test();echo hello;接口start();$camera1-stop();echo ;/手機對象$phone1=new Phone();$phone1-start();$phone1-stop();?1. 接口的使用基本語法interface 接口名 /屬性/方法接口的方法都不能有方法體如何去

5、實現接口class 類名 implements 接口名 1,接口 2.接口它的作用就是 聲明一些方法,供其它類來實現 . 接口還體現編程中我們希望的效果 高內聚低耦合 的特點 :深入討論接口 -interface1.定規范2.定下規范,讓別的程序員來實現3.當多個類,他們之間是平級的關系. 這些類都會去實現某個功能,只是實現的方式不一樣.接口的細節1. 不能去實例化一個接口interface iUsb$a=new iUsb(); (錯誤 !)2. 接口中的所有方法,都不能有方法體3. 一個類可以去實現多個接口語法 :class 類名 implements 接口 1,接口 24. 接口中可以有屬

6、性 ,但是必須是常量 ,并且是 publicinterface iUsbconst A=90;echo ok.iUsb:A;5. 接口的方法是 public 【默認就是 public 】 ,不能是 protected 和 private舉例 :interface iUsb constA=90; functiontest();echo ok.iUsb:A;從上面我們看出 一個接口可以繼承多個其它的接口. 當一個類去實現了某些接口,則必須把所有接口的方法,都實現繼承和實現接口的比較 :(1) 可以認為實現接口是對單一繼承的補充 .(2) 可以在不破壞類層級關系的前提下,對某個類功能擴展 .fina

7、l 關鍵字如果我們希望某個類不被其它的類來繼承 (可能因為安全考慮 .), 可以使用 final如果我們希望某個方法,比如計算個人所得稅的方法,不能子類改寫,可以使用 fianl 來修飾方法class Afinal public function getRate($salary)return $salary*0.08;class B extends A/不能去覆蓋父類的getRate 方法 ./*public function getRate($sal)return $sal*0.01;*/$b=new B();echo $b-getRate(100);final 關鍵字不能去修飾屬性 .const 關鍵字的講解/當你有一個屬性,不希望被修改,則考慮使用 const 做成常量基本用法是class Aconst 常量名 =賦初值 ;interface 接口名 const 常量名 =賦初值 ;常量是 public使用 類名 :常量名 ; 接

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論