接口在Android編碼中是比較抽象的,本人在學(xué)習(xí)的過程中也有過困擾,在網(wǎng)上找到一篇不錯的文章,在這里拿來自己進(jìn)一步分析。讓自己對接口有更深入的理解,也希望能幫到和我一樣有疑問的人。如有轉(zhuǎn)載或其他相關(guān)需求,請參考引用文章:http://blog.csdn.net/qq_23940659/article/details/50791721
接口是對某一種行為的抽象,具體的行為是實(shí)現(xiàn)接口的子類來完成的。

我們先創(chuàng)建一個接口,接口中有一個抽象方法showToast(),只要是實(shí)現(xiàn)了ToastListener的類都必須要重寫showToast()方法。
接下來我們要給接口設(shè)置回調(diào),新建一個類來設(shè)置回調(diào),并寫一個方法來回調(diào)接口的方法,可以用于其他類來實(shí)現(xiàn)接口的方法

可以看到我們創(chuàng)建的這個類中有ToastListener成員變量,在構(gòu)造方法中,我們將外部傳遞進(jìn)來的ToastListener賦值給了成員。

最后我們在主界面去實(shí)現(xiàn)接口中未實(shí)現(xiàn)的方法,創(chuàng)建接口回調(diào)的那個類,通過其構(gòu)造函數(shù)實(shí)例化ToastListener接口,重寫showToast()方法,在其中做彈吐司的操作。
Android是事件驅(qū)動類型的,我們這里分析一下最后談吐司的邏輯是怎樣是實(shí)現(xiàn)的。我們先給按鈕注冊點(diǎn)擊事件(這里是系統(tǒng)寫好的接口回調(diào)),在onClick()方法中我們調(diào)用了ToastListenerUser的useToast(),而useToast()方法中我們又調(diào)用了ToastListener的showToast()方法,我們要記得接口的具體實(shí)現(xiàn)方法都是實(shí)現(xiàn)了其方法的實(shí)現(xiàn)類來完成的,我們在主界面創(chuàng)建ToastListenerUser時傳入了一個匿名的ToastListener實(shí)現(xiàn)類,我們重寫了showToast(),所以最終的實(shí)現(xiàn)是在這里完成的,也就完成了我們的彈吐司的邏輯。

最重要的是我們要理解接口是抽象的,具體的方法是交給實(shí)現(xiàn)該接口的類來執(zhí)行的。理解了這一點(diǎn)就能很大的幫助我們?nèi)ダ斫饨涌诘膶?shí)現(xiàn)邏輯。
其實(shí)我們可以對上面的邏輯進(jìn)行另一種寫法,也更加簡單。

我們不是有接口嗎,接口是用來干嘛的?接口不就是用來實(shí)現(xiàn)的嗎!我們讓主界面實(shí)現(xiàn)ToastListener,代表我們就具有了showToast方法,也讓原接口中的抽象方法具體了,這里類似系統(tǒng)提供的onClickListener。這樣我們也能達(dá)到前面前面那種效果。通過這個例子有沒有對接口的理解加深呢?記住最重要的一句話,接口就是用來實(shí)現(xiàn)的,抽象方法的具體執(zhí)行是交給實(shí)現(xiàn)該接口的類的。