匿名对象

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
接口匿名
相关文章
相关标签/搜索