安卓中對回呼函數的理解

來源:互聯網
上載者:User

個人覺得回調就像多態一樣,比如Boss叫員工去吃飯,但每個員工可能吃不同的食物。只不過,回調是對介面而言。簡單來說就是,A對象調用了自己的方法a,方法a接收的參數是B介面的執行個體b,而在方法a中將執行介面B中的方法c。這樣解釋可能有點繞不過來,下面我們來看一個例子。

比如宿舍的某個同學設定了一個鬧鈴,鬧鈴響時全宿舍的人都能聽到,但是張三比較勤奮,聽到鈴聲後起床了,李四比較懶,聽到鈴聲後還要睡會。我們可以把鬧鈴發出的鈴聲看作是介面,張三和李四都實現了這個“介面”,鬧鈴到一定時間後就要“響鈴”,響鈴就要發出“鈴聲”,“鈴聲”就去叫人,至於人會做什麼就是人本身的事情。下面看個代碼。

1.介面CallPerson

  1. publicinterface CallPerson {
  2. publicabstractvoid doCallPerson ();
  3. }
定義了一個“叫人”的方法。實現這個介面可理解成安裝了鬧鈴。2.類Zhangsan
  1. publicclass Zhangsan implements CallPerson {
  2. String name = "Zhangsan";
  3. public String getName () {
  4. return name;
  5. }
  6. @Override
  7. publicvoid doCallPerson() {
  8. System.out.println(getName() + "聽到鈴聲,勤鳥,起床了!");
  9. }
  10. }
3.類Lisi
  1. publicclass Lisi implements CallPerson {
  2. String name = "Lisi";
  3. public String getName () {
  4. return name;
  5. }
  6. @Override
  7. publicvoid doCallPerson() {
  8. System.out.println(getName() + "聽到鈴聲,懶豬,沒起床!");
  9. }
  10. }
4.類Alarm
  1. publicclass Alarm {
  2. //響鈴 
  3. publicvoid ring (CallPerson callPerson) {
  4. callPerson.doCallPerson();
  5. }
  6. }
5.Activity然後我們在Activity裡類比鬧鈴開始響鈴
  1. import android.os.Bundle;
  2. import android.app.Activity;
  3. publicclass MainActivity extends Activity {
  4. @Override
  5. publicvoid onCreate(Bundle savedInstanceState) {
  6. super.onCreate(savedInstanceState);
  7. setContentView(R.layout.layout_main);
  8. Alarm alarm = new Alarm();
  9. Zhangsan zhangsan = new Zhangsan();
  10. Lisi lisi = new Lisi();
  11. //類比鬧鈴定時時間到,然後響鈴
  12. alarm.ring(zhangsan);
  13. alarm.ring(lisi);
  14. }
  15. }
最後,我們來看看執行的結果
  1. 12-07 21:49:41.947: INFO/System.out(6107): Zhangsan聽到鈴聲,勤鳥,起床了!
  2. 12-07 21:49:41.947: INFO/System.out(6107): Lisi聽到鈴聲,懶豬,沒起床
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.