資源描述:
《《接口抽象類》ppt課件》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、第八章接口目標接口的聲明接口的成員接口的實現(xiàn)接口的繼承抽象類體驗設(shè)計主板、網(wǎng)卡、聲卡三個類和一個PCI接口。通過它們的對話說明接口的作用和功能。接口聲明[訪問修飾符]interface<接口名>{//聲明主體}例:interfaceIControl{voidPaint();}publicprotectedinternalprivate接口的成員可以是方法屬性索引器事件接口名稱一般都會以大寫的I開頭,表示為接口類型。接口成員2-1接口的成員包括從基接口繼承的成員和由接口本身聲明的成員。接口的成員必須是方法、屬性、事件
2、或索引器。接口不能包含常量、字段、運算符、構(gòu)造函數(shù)、析構(gòu)函數(shù),也不能包含任何種類的靜態(tài)成員。接口成員2-2所有接口成員都隱式地具有public訪問屬性。接口成員聲明中包含任何修飾符都屬于編譯時錯誤。例:publicdelegatevoidStringListEvent(IStringListsender);publicinterfaceIStringList{voidAdd(strings);//方法intCount{get;}//屬性eventStringListEventChanged;//事件stringth
3、is[intindex]{get;set;}//索引器}接口實現(xiàn)接口可以由類和結(jié)構(gòu)來實現(xiàn)為了指示類或結(jié)構(gòu)實現(xiàn)了某接口,在該類或結(jié)構(gòu)的基類列表中應(yīng)該包含該接口的標識符。例:interfaceICloneable{objectClone();}interfaceIComparable{intCompareTo(objectother);}classListEntry:ICloneable,IComparable{publicobjectClone(){...}publicintCompareTo(objectother
4、){...}}接口成員訪問接口成員是通過I.M形式的成員訪問表達式和I[A]形式的索引器訪問表達式來訪問的,其中I是接口類型,M是該接口類型的方法、屬性或事件,A是索引器參數(shù)列表。多義性2-1對于多重繼承接口,當兩個或更多個不相關(guān)(互不繼承)的基接口中聲明了具有相同名稱或簽名的成員時,就會發(fā)生多義性。在所有情況下,都可以使用顯式強制轉(zhuǎn)換來解決這種多義性。例:多義性2-2interfaceIInteger{voidAdd(inti);}interfaceIDouble{voidAdd(doubled);}interf
5、aceINumber:IInteger,IDouble{}classC{voidTest(INumbern){n.Add(1);n.Add(1.0);((IInteger)n).Add(1);((IDouble)n).Add(1);}}同名方法聲明同名方法聲明多義性解決接口繼承2-1接口可以實現(xiàn)繼承,而且還可以實現(xiàn)多重繼承。例:interfaceIBase{voidF(inti);}interfaceILeft:IBase{newvoidF(inti);}interfaceIRight:IBase{voidG();
6、}interfaceIDerived:ILeft,IRight{}classA{voidTest(IDerivedd){d.F(1);((IBase)d).F(1);((ILeft)d).F(1);((IRight)d).F(1);}}接口繼承2-2當接口方法被映射到類中的虛方法上時,從該類派生的類若重寫了該虛方法,則將同時更改該接口的實現(xiàn)。例:interfaceIControl{voidPaint();}classControl:IControl{publicvirtualvoidPaint(){...}}cla
7、ssTextBox:Control{publicoverridevoidPaint(){...}}調(diào)用:Controlc=newControl();TextBoxt=newTextBox();IControlic=c;IControlit=t;c.Paint();t.Paint();ic.Paint();it.Paint();抽象類抽象類也必須為在該類的基類列表中列出的接口中所有成員提供它自己的實現(xiàn)。允許抽象類將接口方法映射到抽象方法上。interfaceIMethods{voidF();voidG();}abst
8、ractclassC:IMethods{voidIMethods.F(){FF();}voidIMethods.G(){GG();}protectedabstractvoidFF();protectedabstractvoidGG();}interfaceIMethods{voidF();voidG();}abstractclassC:IMethods{pu