接口在Android編碼中是比較抽象的割按,本人在學習的過程中也有過困擾,在網(wǎng)上找到一篇不錯的文章,在這里拿來自己進一步分析院领。讓自己對接口有更深入的理解够吩,也希望能幫到和我一樣有疑問的人。如有轉(zhuǎn)載或其他相關(guān)需求强法,請參考引用文章:http://blog.csdn.net/qq_23940659/article/details/50791721
接口是對某一種行為的抽象湾笛,具體的行為是實現(xiàn)接口的子類來完成的。
我們先創(chuàng)建一個接口硕淑,接口中有一個抽象方法showToast()嘉赎,只要是實現(xiàn)了ToastListener的類都必須要重寫showToast()方法。
接下來我們要給接口設(shè)置回調(diào)公条,新建一個類來設(shè)置回調(diào),并寫一個方法來回調(diào)接口的方法寥袭,可以用于其他類來實現(xiàn)接口的方法
可以看到我們創(chuàng)建的這個類中有ToastListener成員變量关霸,在構(gòu)造方法中,我們將外部傳遞進來的ToastListener賦值給了成員膘掰。
最后我們在主界面去實現(xiàn)接口中未實現(xiàn)的方法佳遣,創(chuàng)建接口回調(diào)的那個類,通過其構(gòu)造函數(shù)實例化ToastListener接口窒舟,重寫showToast()方法诵盼,在其中做彈吐司的操作银还。
Android是事件驅(qū)動類型的洁墙,我們這里分析一下最后談吐司的邏輯是怎樣是實現(xiàn)的。我們先給按鈕注冊點擊事件(這里是系統(tǒng)寫好的接口回調(diào))扫俺,在onClick()方法中我們調(diào)用了ToastListenerUser的useToast(),而useToast()方法中我們又調(diào)用了ToastListener的showToast()方法羹呵,我們要記得接口的具體實現(xiàn)方法都是實現(xiàn)了其方法的實現(xiàn)類來完成的疗琉,我們在主界面創(chuàng)建ToastListenerUser時傳入了一個匿名的ToastListener實現(xiàn)類,我們重寫了showToast()凑耻,所以最終的實現(xiàn)是在這里完成的柠贤,也就完成了我們的彈吐司的邏輯。
最重要的是我們要理解接口是抽象的邻吭,具體的方法是交給實現(xiàn)該接口的類來執(zhí)行的宴霸。理解了這一點就能很大的幫助我們?nèi)ダ斫饨涌诘膶崿F(xiàn)邏輯。
其實我們可以對上面的邏輯進行另一種寫法瓢谢,也更加簡單。
我們不是有接口嗎枯芬,接口是用來干嘛的幢尚?接口不就是用來實現(xiàn)的嗎翅楼!我們讓主界面實現(xiàn)ToastListener,代表我們就具有了showToast方法理茎,也讓原接口中的抽象方法具體了,這里類似系統(tǒng)提供的onClickListener皂林。這樣我們也能達到前面前面那種效果。通過這個例子有沒有對接口的理解加深呢烛占?記住最重要的一句話沟启,接口就是用來實現(xiàn)的,抽象方法的具體執(zhí)行是交給實現(xiàn)該接口的類的德迹。