匿名對象

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
接口匿名
相關文章
相關標籤/搜索