public class ClassCallBackTest { public static void main(String[] args) { /** * 接口直接new,匿名對象 * 堆中new有這個對象,可是沒有引用; */ new interfaceCallBack() { @Override public void Callback() { System.out.println("接口直接new"); } }.Callback();//注意有分號";"結束 /** * 匿名擴展,匿名繼承ClassCallBack的類; * 堆中new有這個對象,可是沒有引用; */ new ClassCallBack(5) { public void Callback() { super.Callback(); } }; /** * 命名繼承 */ ClassCallBack cl = new ClassCallBack(5) { public void Callback() { super.Callback(); } }; cl.Callback(); /** * 接口的匿名對象 */ cl.callBackParam(new interfaceCallBack(){ @Override public void Callback() { System.out.println("接口匿名"); } }); } } interface interfaceCallBack { void Callback(); } class ClassCallBack { private int i =0; public ClassCallBack(int j) { i = j; } void Callback() { System.out.println(i); } void callBackParam( interfaceCallBack in) { in.Callback(); } }
輸出結果: java
接口直接new 5 接口匿名