1. 程式人生 > >java 介面。Android Interface 自定義介面回撥。

java 介面。Android Interface 自定義介面回撥。

不是很懂java 的Interface 介面的具體怎麼實現的。在網上看了很多例子,終於理解了那麼點啊。

因為原來在學習做一個微信的語音功能要做到一個介面功能。微信的後面有時間會寫出來。

Interface 主要用來描述這類具有什麼功能,而並不能給出每個功能的具體是實現。一個類可以實現多個介面,並在需要介面的地方,隨時使用實現了相應介面的物件。p.s.interface一定是public

下面的例子就是自己寫的一個例子可以嘗試著自己寫一個:

介面回撥的典型例子就是Android的Button監聽事件了,

button.setOnClickListener(new OnClickListerner({

@Override
public void onClick(View v) {
System.out.println("呼叫回撥函式");
}

});

button的點選就是觸發了回撥的物件。

當用戶點選Button的時候,介面函式被回撥。所以可以這樣子理解java callback,當條件成立了,或者是觸發了某個條件,而引起了函式的回撥。這個就是我對Interface介面的理解。

所以我們首先需要寫一個Interface介面叫CallListener,然後寫一個能呼叫該介面函式的類,叫做Call最後寫一個用到Call類物件呼叫監聽的NeedCall類。

介面類:

public interface CallListener {
	public void finishCall();
}
Call類:
public class Call {
	CallListener callListener;  //定義介面物件
	public void setOnCallListener(CallListener listener){ //介面物件構造(介面沒有例項化,因為沒有具體方法)
		this.callListener=listener;
	}
	/*
	 * 觸發介面的回撥方法,相當於button的點選觸發,在主類方法呼叫該方法觸發回撥
	 */
	public void onCall(){
		callListener.finishCall();
	}
}
NeedCall類:
public class NeedCall {

	public static void main(String[] args) {
		Call call=new Call();  //Call類的例項化
		
		call.setOnCallListener(new CallListener() {
			
			@Override
			public void finishCall() {
				System.out.println("對介面方法的重寫,呼叫回撥函式時呼叫該回調函式");
			}
		});
		
		call.onCall();  //真正觸發回撥的方法。
	}
}


總結一下,要觸發介面就是要構成觸發介面的方法 。就像你要去監聽一個人是否離開房間,就開一個口子傳字條(相當於定義一個介面),再定義一個可以呼叫該介面的方法,最後那個人離開時觸發你的監聽條件。你只需要看著口子就可以,一旦條件觸發,就構成了回調了。