接口學(xué)習(xí)指導(dǎo)書_第1頁
接口學(xué)習(xí)指導(dǎo)書_第2頁
接口學(xué)習(xí)指導(dǎo)書_第3頁
接口學(xué)習(xí)指導(dǎo)書_第4頁
接口學(xué)習(xí)指導(dǎo)書_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、接口學(xué)習(xí)指導(dǎo)書一:學(xué)習(xí)目標知識點知識點重要性掌握程度知識點關(guān)聯(lián)接口簡介1、 接口概述2、 自定義接口3、 實現(xiàn)接口4、 實現(xiàn)類與其接口之間的轉(zhuǎn)型極高熟練接口與抽象類很類似,都是對一組類的規(guī)范,但在接口中不提供任何方法實現(xiàn)。接口是一種約束形式,只包含成員定義,不包含成員實現(xiàn)的內(nèi)容,僅僅規(guī)定了實現(xiàn)該接口的一組類中必須提供的方法,從而使規(guī)范和實現(xiàn)得到分離。熟練掌握接口的相關(guān)知識,才能以面向接口進行編程。接口實現(xiàn)了多態(tài)性,使編程方式比較靈活,在以后的編程中會頻繁使用接口,掌握了接口的編程,對以后分析系統(tǒng),設(shè)計系統(tǒng)都有很大的幫助。接口繼承高掌握與類的繼承相似,一個接口可以從另一個接口派生,派生的接口將繼

2、承父接口的所有成員。接口的運用1、面向接口編程2、接口作為方法的形參3、接口作為返回類型4、比較抽象類和接口極高熟練接口的運用是用接口來分析問題,解決問題,以面向接口的方式進行編程。接口和抽象類都可以實現(xiàn)多態(tài),因此要與抽象類對比學(xué)習(xí)。另外,在學(xué)習(xí)設(shè)計模式時,會經(jīng)常運用到接口。使用接口進行設(shè)計1、開閉原則2、工廠方法模式高理解即以面向接口進行編程,這是接口的具體運用。理解開閉原則和工廠方法對掌握接口的運用和以后學(xué)習(xí)的設(shè)計模式,設(shè)計原則都有很大的幫助。二:重難點知識點1、 重難點1:接口簡介學(xué)習(xí)方法:1、 首先要掌握接口的概念和接口的定義。接口是一種約束形式,只包含成員定義,不包含成員實現(xiàn)的內(nèi)容。

3、它定義了某一組類需要遵守的規(guī)則,但是接口并不關(guān)心在這些類的內(nèi)部的數(shù)據(jù)狀態(tài)及具體的實現(xiàn)細節(jié),僅僅規(guī)定了這組類中必須提供的方法,從而使規(guī)范與實現(xiàn)得到分離。可簡單的這樣理解接口:接口是方法的抽象,如果不同的類有同樣的方法,那么就應(yīng)該考慮使用接口。 例如,人和車都有“跑”的方法,那么就可以定義一個接口IRun,來抽象出跑的方法。定義接口的語法:修飾符 interface <接口名>定義接口成員例1-1:需求:上述講到的人和車的例子用接口來定義,因此可以抽象出跑的方法定義到接口中。具體如下。public interface IRunvoid Run(); 2、掌握接口的實現(xiàn)接口實現(xiàn)的語法:修

4、飾符 class <類名> :<父類名> <,接口列表>接口成員的具體實現(xiàn)例2-1:編寫兩個類,實現(xiàn)人和車跑的具體功能,實現(xiàn)上面接口Irun。/實現(xiàn)人跑步的類:public class Person:IRun public void Run() Console.WriteLine(“我在跑步!”);/實現(xiàn)車在跑的類:public class Car:IRunpublic void Run() Console.WriteLine(“車子正在運行”);3、掌握實現(xiàn)類和接口之間的轉(zhuǎn)型向上轉(zhuǎn)型:將實現(xiàn)類的對象轉(zhuǎn)換為接口類型與子類和父類的關(guān)系相似,從“實現(xiàn)類”到接口的

5、向上轉(zhuǎn)型是一個隱式轉(zhuǎn)換,不需要用轉(zhuǎn)型運算符。在“實現(xiàn)類”的實例中包含了接口的全部成員,因此,對象能夠成功轉(zhuǎn)型為接口類型。例2-2:將上面的例子中Car類和Person類對象轉(zhuǎn)換為其接口類型。第一步:定義兩個接口對象。第二步:定義一個Car類對象和一個Person類對象第三步:將定義好的Car類對象和Person類對象轉(zhuǎn)換為接口類型。/定義兩個接口對象IRun CarRun;IRun PersonRun;/定義一個Car類對象和一個Person類對象Car car=new Car();Person per=new Person();/將定義好的Car類對象和Person類對象轉(zhuǎn)換為接口類型Car

6、Run=car;PersonRun=per;向下轉(zhuǎn)型:接口類型轉(zhuǎn)換主對應(yīng)的實現(xiàn)類類型當許多不同的類實現(xiàn)同一個接口時,從接口到“實現(xiàn)類”的向下轉(zhuǎn)型就需要執(zhí)行顯示的強制轉(zhuǎn)換。例2-3:將例2-3中兩個接口對象轉(zhuǎn)換為對應(yīng)的實現(xiàn)類。第一步:定義一個Car類對象和一個Person類對象。第二步:將例3-1中兩個接口對象轉(zhuǎn)換為對應(yīng)的實現(xiàn)類/定義一個Car類對象和一個Person類對象Car car1;Person per1;將例2-2中兩個接口對象轉(zhuǎn)換為對應(yīng)的實現(xiàn)類car1=(Car)CarRun;per1=(Person)PersonRun;4、總結(jié)接口的特點(1)接口不能實例化;(2)包含未實現(xiàn)的方法

7、聲明;(3)派生類必須實現(xiàn)未實現(xiàn)的方法,抽象類是抽象方法,接口則是所有成員(不僅是方法包括其他成員);(4)接口除了可以包含方法之外,還可以包含屬性、索引器、事件,而且這些成員都被定義為公有的。除此之外,不能包含任何其他的成員,例如:常量、域、構(gòu)造函數(shù)、析構(gòu)函數(shù)、靜態(tài)成員。一個類可以直接繼承多個接口,但只能直接繼承一個類(包括抽象類)。5、學(xué)習(xí)和使用接口的注意事項:(1)定義接口時盡量使用接口隔離原則,即一個接口只實現(xiàn)一個功能!例5-1:鳥類都有飛和吃東西的功能?,F(xiàn)將其抽象到接口中定義:第一種定義方法:public interface IAnmalvoid Fly();void Eat();第

8、二種定義方式:public interface IAnmalFlyvoid Fly();public interface IAnmalEatvoid Eat();第一種定義方式把兩個不同的功能定義在了同一個接口中。如果現(xiàn)在有一個鴕鳥要實現(xiàn)這個接口,那么此時,必須實現(xiàn)該接口的兩個功能,即飛和吃的方法,但是鴕鳥是不能飛的,那這時該怎么辦呢?此時就可以運用另一種方式實現(xiàn),即采用接口隔離原則來定義接口,即采用第二種定義方式,一個接口只實現(xiàn)一個功能,當實現(xiàn)類需要哪個功能時就實現(xiàn)哪個接口。(2)接口上的方法不需要訪問修飾符,因為它默認的就是public的共性問題:(1)接口中的訪問權(quán)限是什么?答:訪問權(quán)限

9、在接口里是無意義的。所有的接口成員都必須是 public 的。(2)接口是一種協(xié)議。其接口中的方法只有方法聲明,但沒有方法體。如果某個類實現(xiàn)該接口,那么就得為接口中所有方法填寫方法體。就是具體的實現(xiàn)這個方法。想問一下為什么要具體實現(xiàn)所有的方法,如果只用到多少就實現(xiàn)多少那么不是更好嗎?答:這是一個規(guī)范和思維習(xí)慣問題。接口是程序?qū)δ懿煌褂梅椒ㄏ嗤念惖母爬ê投x,如果你的很多類要繼承一個同一個接口,但又經(jīng)常都不需要實現(xiàn)所有這個接口的所有方法或者屬性,那就是你的接口設(shè)計的有問題。舉個例子:比如, "手動檔轎車" 這個接口,它需要有以下幾個方法就能開走:方向盤、油門、剎車、

10、排檔、離合器 。 福特??怂?,奇瑞 A3, 大眾菠蘿, 夏利 N8 這幾個具體的車型相當于"類",它們都繼承"手動檔轎車",我會開手動檔轎車,那么這些實現(xiàn) "手動檔轎車" 接口的隨便一輛車拿給我,我都能開走。 但是你造了那么一輛車,它沒有剎車、沒有排檔、沒有離合器,然后告訴我這是一輛"手動檔轎車"(繼承"手動檔轎車" 接口) , 我拿去,是能開走,但是一旦想停車、換檔,才發(fā)現(xiàn)沒有這幾個設(shè)備(方法,屬性),后果是什么? 沒人規(guī)定你造的這個車不能叫"手動檔轎車",但很顯然別人要用

11、開手動檔轎車的方法來開你這個車,十有八九會出事故。所以,編譯器規(guī)定你繼承了一個接口,你就必須實現(xiàn)它的所有成員,就像規(guī)定你造"手動檔轎車",必須把方向盤、油門、剎車、排檔、離合器全部裝全才行。輔導(dǎo)視頻:無 作業(yè)內(nèi)容:見作業(yè)文件夾下的接口作業(yè).doc補充閱讀:無2、 重難點2:接口的運用學(xué)習(xí)方法:1、理解面向接口編程的思想。在一個面向?qū)ο蟮南到y(tǒng)中,系統(tǒng)的各種功能是由許許多多的不同對象協(xié)作完成的。在這種情況下,各個對象內(nèi)部是如何實現(xiàn)自己的對系統(tǒng)設(shè)計人員來講就不那么重要了;而各個對象之間的協(xié)作關(guān)系則成為系統(tǒng)設(shè)計的關(guān)鍵。小到不同類之間的通信,大到各模塊之間的交互,在系統(tǒng)設(shè)計之初都是要

12、著重考慮的,這也是系統(tǒng)設(shè)計的主要工作內(nèi)容。面向接口編程就是指按照這種思想來編程。簡單點講就是開發(fā)系統(tǒng)時,主休構(gòu)架使用接口,接口構(gòu)成系統(tǒng)的骨架。2、掌握接口作為參數(shù)和返回類型的運用接口作為參數(shù)即讓方法的參數(shù)為接口類型來實現(xiàn)接口的運用。例3-1:在例2-1和2-2中已經(jīng)定義好了一個接口IRun和兩個實現(xiàn)類Person和Car。現(xiàn)在要求測試類中定義一個方法來實現(xiàn)跑的功能。要求該方法參數(shù)為接口IRun類型。具體如下。/第一步:編寫測試方法public static TestRun(IRun testR)testR.Run();在main方法中調(diào)用這個方法來實現(xiàn)人和車的跑的功能。具體如下。/第二步:創(chuàng)建

13、一個Person類的對象和一個Car類對象Person p=new Person();Car c=new Car();/第三步:調(diào)用TestRun方法實現(xiàn)跑的功能。TestRun(p);TestRun(c);通過這三個步驟就可以運用接口作為參數(shù)來實現(xiàn)不同對象跑的功能。接口作為返回類型即將接口作為方法的返回值來實現(xiàn)接口的運用。例3-1:在例2-1和2-2中已經(jīng)定義好了一個接口Irun和兩個實現(xiàn)類Person和Car。現(xiàn)在要求測試類中定義一個方法來實現(xiàn)跑的功能。要求該方法的返回類型為接口Irun類型。具體如下。/第一步:編寫測試方法public IRun TestRun(int i)/i為1時,創(chuàng)

14、建Person類對象返加,否則創(chuàng)建Car類的對象返回。if(i=1) return new Person();elsereturn new Car();/第二步:在main方法中調(diào)用這個方法得到接口類型。具體如下。IRun personIRun=TestRun(1);/得到Person類對象的接品引用類型 IRun carIRun=TestRun(2);/得到Car類對象的接品引用類型 /第三步:運用得到的接口類型調(diào)用Run方法實現(xiàn)跑的功能。personIRun.Run();carIRun.Run();通過這三個步驟就可以運用接口作為返回類型來實現(xiàn)不同對象跑的功能。3、比較接口和抽象類1)抽象

15、類和接口很類似,這是因為它們都具有以下的特征。(1)接口和抽象類都不能被實例化。(2)接口和抽象類都包含未實現(xiàn)的方法,并且由實現(xiàn)接口或者繼承抽象類的具體實現(xiàn)類來實現(xiàn)這些方法。2)接口和抽象類之間從設(shè)計角度出發(fā)又存在很多區(qū)別,表現(xiàn)如下:(1)接口是一種規(guī)范的體現(xiàn),要求各個類之間應(yīng)該遵守的標準,但是不關(guān)注具體的細節(jié),體現(xiàn)了規(guī)范與實現(xiàn)分離的設(shè)計思想。(2)抽象類則是一種模板設(shè)計的體現(xiàn),從多個子類中撮抽象形成父類,然后由各個子類進行再次擴展和改進。3)從接口和抽象類的具體應(yīng)用上也存在一些區(qū)別,表現(xiàn)如下:(1)抽象類可以包含抽象方法和具體的方法實現(xiàn),而接口只能包含未實現(xiàn)的方法。(2)抽象類中可以有構(gòu)造函

16、數(shù),而接口中不能有構(gòu)造函數(shù)。(3)抽象類中可以有普通的成員變量,而接口中只有常駐量。(4)抽象類中的抽象方法可以使用public ,protected和默認類型進行訪問控制,而接中所有的方法都必須是public,并且默認是public類型。(5)抽象類中可以包含靜態(tài)成員,接口中不能包含靜態(tài)成員。 (6) 實現(xiàn)抽象類中的抽象方法要使用override關(guān)鍵字,實現(xiàn)接口的方法不需要。共性問題:(1)當把接口刪了后 程序還是照常運行,結(jié)果也一樣,為什么還要用接口呢?答:接口其實可以理解是協(xié)議,建立規(guī)范.最大目的是減少代碼的重復(fù)性和增加靈活性。輔導(dǎo)視頻:無 作業(yè)內(nèi)容:見作業(yè)文件夾下的接口作業(yè).doc補充

17、閱讀: 無3、 重難點3:使用接口進行設(shè)計學(xué)習(xí)方法:1、掌握開閉原則。開閉原則就是軟件實體應(yīng)當對擴展開放,對修改關(guān)閉”。通俗一點,也就是:軟件系統(tǒng)中包含的各種組件,例如模塊(Modules)、類(Classes)以及功能(Functions)等等,應(yīng)該在不修改現(xiàn)有代碼的基礎(chǔ)上,引入新功能。開閉原則中“開”,是指對于組件功能的擴展是開放的,是允許對其進行功能擴展的;開閉原則中“閉”,是指對于原有代碼的修改是封閉的,即不應(yīng)該修改原有的代碼。具體內(nèi)容可參見補充閱讀部分開閉原則概述.doc2、掌握工廠方法模式工廠模式概述工廠方法(FactoryMethod)模式是類的創(chuàng)建模式,其用意是定義一個創(chuàng)建產(chǎn)品

18、對象的工廠接口,將實際創(chuàng)建工作推遲到子類中。工廠方法模式是簡單工廠模式的進一步抽象和推廣。由于使用了多態(tài)性,工廠方法模式保持了簡單工廠模式的優(yōu)點,而且克服了它的缺點。在工廠方法模式中,核心的工廠類不再負責所有產(chǎn)品的創(chuàng)建,而是將具體創(chuàng)建工作交給子類去做。這個核心類僅僅負責給出具體工廠必須實現(xiàn)的接口,而不接觸哪一個產(chǎn)品類被實例化這種細節(jié)。這使得工廠方法模式可以允許系統(tǒng)在不修改工廠角色的情況下引進新產(chǎn)品。在Factory Method模式中,工廠類與產(chǎn)品類往往具有平行的等級結(jié)構(gòu),它們之間一一對應(yīng)。工廠模式結(jié)構(gòu)圖工廠模式包含4個角色:抽象工廠(Creator)角色:是工廠方法模式的核心,與應(yīng)用程序無關(guān)。任何在模式中創(chuàng)建的對象的工廠類必須實現(xiàn)這個接口。具體工廠(Concrete Creator)角色:這是實現(xiàn)抽象工廠接口的具體工廠類,包含與應(yīng)用程序密切相關(guān)的邏輯,并且受到應(yīng)用程序調(diào)用以創(chuàng)建產(chǎn)品對象。抽象產(chǎn)品(Product)角色:工廠方法模式所創(chuàng)建的對象的超類型,也就是產(chǎn)品對象的共同父類或共同擁有的接口。具體產(chǎn)品(Concrete Product)角色:這個角色實現(xiàn)了抽象產(chǎn)品角

溫馨提示

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

最新文檔

評論

0/150

提交評論