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 接口匿名