1. 程式人生 > 實用技巧 >介面回撥與回撥函式

介面回撥與回撥函式

https://blog.csdn.net/u013278099/article/details/51249594安卓開發介面回撥經典案例網路請求

https://blog.csdn.net/Lpppnnn/article/details/78806306什麼是介面回撥,介面回撥與向上轉型的區別,回撥函式的理解

1.介面回撥與物件的上轉型物件用法相同
介面回撥是什麼[2]?
介面回撥是指:可以把使用某一介面的類建立的物件的引用賦給該介面宣告的介面變數,那麼該介面變數就可以呼叫被類實現的介面的方法。實際上,當介面變數呼叫被類實現的介面中的方法時,就是通知相應的物件呼叫介面的方法,這一過程稱為物件功能的介面回撥。
nterface People{
void peopleList(); } class Student implements People{ public void peopleList(){ System.out.println(“I’m a student.”); } } class Teacher implements People{ public void peopleList(){ System.out.println(“I’m a teacher.”); } } public class Example{ public static void main(String args[]){ People a;
//宣告介面變數 a=new Student(); //例項化,介面變數中存放物件的引用 a.peopleList(); //介面回撥 a=new Teacher(); //例項化,介面變數中存放物件的引用 a.peopleList(); //介面回撥 } } //結果: //I’m a student. //I’m a teacher.
什麼是向上轉型[1]?

Shape s=new Circle();
這裡,建立了一個Circle物件,並把得到的引用立即賦值給Shape。通過繼承,Circle就是一種Shape。
假設你呼叫基類方法(它已在匯出類中被覆蓋):
s.draw();
由於後期繫結(多型),將會正確呼叫Circle.draw()方法。
向上轉型與介面回撥的區別
看似向上轉型和介面回撥是一回事。看下面兩句話,均出自Thinking in Java。
使用介面的核心原因:為了能夠向上轉型為多個基型別[1]。即利用介面的多實現,可向上轉型為多個介面基型別(具體見《抽象與介面》章節6)。
從實現了某介面的物件,得到對此介面的引用,與向上轉型為這個物件的基類,實質上效果是一樣的。(此句摘自Thinking in Java 3rd 介面與內部類一章)
所以,我認為,這兩個概念是從兩個方面來解釋一個行為。介面回撥的概念,強調使用介面來實現回撥物件方法使用權的功能(下一章節詳細分析)。而向上轉型則牽涉到多型和執行期繫結的範疇。

2.回撥函式。

常用場景:本地程式通過一個執行緒開啟一個網路連線,當網路連線成功或者伺服器響應訊息傳遞回來的時候,才能去做接下來的工作。