一、內部類的主要作用如下:
1. 內部類提供了更好的封裝,可以把內部類隱藏在外部類之內,不允許同一個包中的其他類訪問該類
2. 內部類的方法可以直接訪問外部類的所有數據,包括私有的數據
3. 內部類所實現的功能使用外部類同樣可以實現,只是有時使用內部類更方便。
二、內部類可分為以下幾種:
- 成員內部類
- 靜態內部類
- 方法內部類
- 匿名內部類。
三、1,定義了成員內部類后,必須使用外部類對象來創建內部類對象,而不能直接去 new 一個內部類對象,即:內部類 對象名 = 外部類對象.new 內部類( );
2,外部類是不能直接使用內部類的成員和方法滴,可先創建內部類的對象,然后通過內部類的對象來訪問其成員變量和方法。
3,可先創建內部類的對象,然后通過內部類的對象來訪問其成員變量和方法。HelloWorld.this.name
四、Java回調
回調用於層間協作,例如作為一個驅動,是一個底層,他在收到一個數據時,除了完成本層的處理工作外,還將進行回調,將這個數據交給上層應用層來做進一步處理,這在分層的數據通信中很普遍。
其實回調和API非常接近,他們的共性都是跨層調用的函數。但區別是API是低層提供給高層的調用,一般這個函數對高層都是已知的;而回調正好相反,他是高層提供給底層的調用,對於低層他是未知的,必須由高層進行安裝,這個安裝函數其實就是一個低層提供的API,安裝后低層不知道這個回調的名字,但它通過一個函數指針來保存這個回調,在需要調用時,只需引用這個函數指針和相關的參數指針。
其實:回調就是該函數寫在高層,低層通過一個函數指針保存這個函數,在某個事件的觸發下,低層通過該函數指針調用高層那個函數。
關於回調的總結:
在Java中,通常就是編寫另外一個類或類庫的人規定一個接口,然后你來實現這個接口,然后把這個接口的一個對象作為參數傳給別人的程序,別人的程序必要時就會通過那個接口來調用你編寫的函數。
下面這個程序會很好的表示回調執行的過程:
public interface CallBack { //執行回調操作的方法 void execute(); }
1 public class Tools { 2 3 /** 4 * 測試函數使用時間,通過定義CallBack接口的execute方法 5 * @param callBack 6 */ 7 public void testTime(CallBack callBack) { 8 long begin = System.currentTimeMillis();//測試起始時間 9 callBack.execute();//進行回調操作 10 long end = System.currentTimeMillis();//測試結束時間 11 System.out.println("[use time]:" + (end - begin));//打印使用時間 12 } 13 14 public static void main(String[] args) { 15 Tools tool = new Tools(); 16 tool.testTime(new CallBack(){ 17 //定義execute方法 18 public void execute(){ 19 //這里可以加放一個或多個要測試運行時間的方法 20 TestObject.testMethod(); 21 } 22 }); 23 } 24 25 }
匿名內部類最常用的情況就是在回調當中的精彩表現。 回調是一種雙向調用模式,也就是說,被調用方在接口被調用時也會調用對方的接口.