接口回調
egg: a:demo類(調用打印) b:打印類 c:打印接口,其中有抽象方法suc()和fail() a調用b的打印方法時傳入c接口的實現類,b的這個打印方法中在合適的位置去調用a傳入的接口的對應方法
1)定義接口: 定義一個接口、定義其中的抽象方法、抽象方法含有參數(被傳遞的數據);
2)編寫回調方法: 在定義接口的類中,編寫用戶回調的方法,要傳遞一個接口對象實例,讓別的類去實現。(相當於爲接口成員變量賦值)
3)爲抽象方法賦值: 獲取一個全局的接口成員變量,在某個事件中使用接口成員變量調用接口中的方法,並且爲抽象方法中的參數賦值。(這一步可以在回調方法中實現)
在另一個頁面,在合適的時機,創建此類的實例,調用類中的回調方法,爲接口對象賦值this,即可實現回調。
需要一個接口的實現類:
1)讓當前Activity實現接口,變成接口的實現類;
2)寫一個類去實現接口,實現其中的抽象方法,然後在需要的地方創建一個接口實現類的子類對象
3)直接在當前位置使用匿名對象實現,創建一個接口實例。
回調原理:
接口調用自己的抽象方法,相當於接口的實現類調用實現類中重寫的抽象方法;
接口中沒有構造函數:
1)接口中是沒有構造函數的,不能直接創建對象,只能由實現類創建對象;接口中的成員常量不需要進行初始化,所以不需要構造函數。
2)而抽象類是有構造方法的,爲了給子類調用初始化抽象類中的成員變量。
接口的特點:
1)接口用關鍵字interface表示;類實現接口用implements表示。
2)接口不能實例化:那麼,接口如何實例化呢?按照多態的方式,由具體的子類實例化。其實這也是多態的一種,接口多態。
3)接口的子類:要麼是抽象類,要麼重寫接口中的所有抽象方法。
接口中的成員:
成員變量:只能是常量 默認修飾符 public static final(不能被修改)
構造方法:沒有,因爲接口主要是擴展功能的,而沒有具體存在
成員方法:只能是抽象方法 默認修飾符 public abstract(可以省略)
類與類,類與接口以及接口與接口的關係:
類與類: 繼承關係,只能單繼承,但是可以多層繼承
類與接口:實現關係,可以多實現,還可以在繼承一個類的同時實現多個接口。
egg: a:demo類(調用打印) b:打印類 c:打印接口,其中有抽象方法suc()和fail() a調用b的打印方法時傳入c接口的實現類,b的這個打印方法中在合適的位置去調用a傳入的接口的對應方法
1)定義接口: 定義一個接口、定義其中的抽象方法、抽象方法含有參數(被傳遞的數據);
2)編寫回調方法: 在定義接口的類中,編寫用戶回調的方法,要傳遞一個接口對象實例,讓別的類去實現。(相當於爲接口成員變量賦值)
3)爲抽象方法賦值: 獲取一個全局的接口成員變量,在某個事件中使用接口成員變量調用接口中的方法,並且爲抽象方法中的參數賦值。(這一步可以在回調方法中實現)
在另一個頁面,在合適的時機,創建此類的實例,調用類中的回調方法,爲接口對象賦值this,即可實現回調。
需要一個接口的實現類:
1)讓當前Activity實現接口,變成接口的實現類;
2)寫一個類去實現接口,實現其中的抽象方法,然後在需要的地方創建一個接口實現類的子類對象
3)直接在當前位置使用匿名對象實現,創建一個接口實例。
回調原理:
接口調用自己的抽象方法,相當於接口的實現類調用實現類中重寫的抽象方法;
接口中沒有構造函數:
1)接口中是沒有構造函數的,不能直接創建對象,只能由實現類創建對象;接口中的成員常量不需要進行初始化,所以不需要構造函數。
2)而抽象類是有構造方法的,爲了給子類調用初始化抽象類中的成員變量。
接口的特點:
1)接口用關鍵字interface表示;類實現接口用implements表示。
2)接口不能實例化:那麼,接口如何實例化呢?按照多態的方式,由具體的子類實例化。其實這也是多態的一種,接口多態。
3)接口的子類:要麼是抽象類,要麼重寫接口中的所有抽象方法。
接口中的成員:
成員變量:只能是常量 默認修飾符 public static final(不能被修改)
構造方法:沒有,因爲接口主要是擴展功能的,而沒有具體存在
成員方法:只能是抽象方法 默認修飾符 public abstract(可以省略)
類與類,類與接口以及接口與接口的關係:
類與類: 繼承關係,只能單繼承,但是可以多層繼承
類與接口:實現關係,可以多實現,還可以在繼承一個類的同時實現多個接口。
接口與接口:繼承關係,可以單繼承,也可以多繼承。
https://blog.csdn.net/qq379454816/article/details/51546638