java介面回撥
阿新 • • 發佈:2019-02-09
兩個類:Dog和Cat,一個介面CallBack。
1 Dog類,實現介面CallBack介面:
2.Cat類public class Dog implements CallBack { private Cat cat; public Dog(Cat li){ this.cat=li; } public void ask(String s){ System.out.println("dog is asking"); //呼叫cat的ask方法,並把當前物件註冊進去 cat.ask(this,s); } //回撥函式 @Override public void solve(String s) { System.out.println("執行回撥函式"); System.out.print(s); } }
3.測試程式碼public class Cat { private CallBack callBack; public void ask(CallBack callBack,String s){ System.out.println("cat:ask"); callBack.solve(s); } //內部類進行介面回撥 public void setCallBack(CallBack callBack){ System.out.println("Cat:setCallBack"); callBack.solve("執行回撥函式"); } }
cat=new Cat();
dog=new Dog(cat);
dog.ask("dog is asking");
4.輸出結果:
dog is asking
cat:ask
執行回撥函式
dog is asking
分析:dog的ask方法呼叫cat的ask方法,cat的ask方法回撥dog的solve方法,dog的solve方法是回撥方法
****匿名內部類實現介面回撥****
a.測試程式碼如下:
輸出結果:cat=new Cat(); cat.setCallBack(new CallBack() { @Override public void solve(String s) { System.out.println("執行回撥函式引數-s "+s); System.out.println("內部類回撥函式"); } });
Cat:setCallBack
執行回撥函式引數-s 執行回撥函式
內部類回撥函式
分析:java多型,cat.setCallBack方法把一個實現CallBack介面的物件註冊到cat中,實現回撥