資源描述:
《面向?qū)ο缶幊堂嫦蚪涌凇酚蓵T上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、第六章節(jié):面向?qū)ο缶幊探涌谂c設(shè)計模式回顧舉例說明在什么樣的情況下,需要使用到繼承?在Java程序中,多態(tài)帶給我們的好處是什么?www.cssxt.com掌握Java接口理解Java接口與多態(tài)的關(guān)系掌握面向接口編程的思想掌握常量接口的使用設(shè)計模式本章目標(biāo)www.cssxt.com單一繼承的局限性1、如下的類圖描述正確嗎?2、青蛙是兩棲動物,怎么辦呢?我該何處何從……www.cssxt.com什么是Java接口接口與前面所學(xué)的抽象類一樣是一種規(guī)范和標(biāo)準(zhǔn)、可以約束類的行為定義一個接口不指定具體的實現(xiàn)一個Java接口是一些方法特征的集合,但沒有方法的實現(xiàn)Ja
2、va接口中定義的方法在不同的地方被實現(xiàn),可以具有完全不同的行為www.cssxt.com一個例子www.cssxt.com一個實例publicinterfacePCI{publicvoidstart();publicvoidstop();}classSoundCardimplementsPCI{publicvoidstart(){System.out.println("Dudu...");}publicvoidstop(){System.out.println("Soundstop!");}}這是Java接口,相當(dāng)于主板上的PCI插槽的規(guī)范cla
3、ssNetworkCardimplementsPCI{publicvoidstart(){System.out.println("Send...");}publicvoidstop(){System.out.println("Networkstop!");}}聲卡、網(wǎng)卡都實現(xiàn)了PCI插槽的規(guī)范,但行為完全不同www.cssxt.com一個實例publicclassAssembler{publicstaticvoidmain(String[]args){PCInc=newNetworkCard();PCIsc=newSoundCard();nc.st
4、art();sc.start();}}可以使用Java接口標(biāo)識類型運行時,根據(jù)實際創(chuàng)建的對象類型調(diào)用相應(yīng)的方法實現(xiàn)Dudu...Send...控制臺輸出21www.cssxt.com生活中的接口USB接口使用USB接口必須符合USB規(guī)范接口是一套規(guī)范,遵守這個規(guī)范就可以實現(xiàn)功能www.cssxt.com接口的特點JAVA中一個類能否繼承多個父類?接口:接口可以說是對繼承單根性的擴展接口提供了一組規(guī)范、一個標(biāo)準(zhǔn)接口屏蔽了實現(xiàn)的細節(jié)方便多人協(xié)同開發(fā)特點:接口不能被實例化不管是否標(biāo)識,接口中所有方法都是抽象的,公共的。接口中只能定義常量www.cssxt
5、.com用接口實現(xiàn)讓我們?yōu)榍嗤苷乙粋€合法的身份?www.cssxt.comJAVA接口開發(fā)這樣一個小系統(tǒng),包含類型:教員、中心、打印機,具體要求如下:教員、以及中心都具有方法:輸出詳細信息中心具有屬性:打印機,能夠通過中心的打印機打印教員或中心的詳細信息系統(tǒng)要具備良好的可擴展性與可維護性打印教員中心教員詳細信息中心詳細信息detail方法(輸出詳細信息)www.cssxt.comJAVA接口以下這個解決方案中存在著什么問題?publicclassUCSTeacher1{//輸出教員的詳細信息publicStringdetail(){return"
6、本人是CSU教員";}}publicclassUCSSchool1{privatePrinterprinter=newPrinter();//輸出中心的詳細信息publicStringdetail(){return"這里是CSU中心";}//使用打印機打印教員信息publicvoidprint(UCSTeacher1t){printer.print(t.detail());}//使用打印機打印中心信息publicvoidprint(UCSSchool1s){printer.print(s.detail());}}publicclassPrinter{
7、publicvoidprint(Stringcontent){System.out.println("開始打?。?);System.out.println(content);}}每增加一種新類型,都需要增加相應(yīng)的print(類型名稱var)方法——程序的可擴展性及可維護性極差——這不符合系統(tǒng)的要求www.cssxt.com用Java接口重構(gòu)項目在這個系統(tǒng)中,存在繼承關(guān)系嗎?教員、中心屬于兩種不同的類型,無法通過“is-a”找到一個合適的父類教員、中心都存在一個共同的方法特征:detail,它們對detail方法有各自不同的實現(xiàn)——這完全符合Java接
8、口的定義www.cssxt.com類圖定義一個Java接口,在其中定義detail方法,但沒有具體實現(xiàn)實現(xiàn)這