2013-12-06

[Java]練習匿名class

John大師開釋 package:java2.itf; Class:Listene、 ListenerImpl 、Button、MainTest
package java2.itf;
public interface Listener {
	public void eventHappen();//Interface所有的Method不能有身體
}

//============================================================
package java2.itf;
public class ListenerImpl implements Listener {//為了要實做Listener這個interface,所以要透過implements來長出身體{}
	@Override
	public void eventHappen() {
		System.out.println("ListenerImpl內的實作eventHappen()");
	}
}

//============================================================
package java2.itf;
public class Button {
	public Listener listener;
	public void setListener(Listener m){
		this.listener = m;
	}
	public void onClick(){
		listener.eventHappen();
	}
}

//============================================================
package java2.itf;
public class MainTest {
	public static void main(String[] args) {
		//1.直接使用實作View interface的class
		Button b = new Button();
		//ListenerImpl listImpl = new ListenerImpl();
		b.setListener(new ListenerImpl());
		b.onClick();

		//1.2最初版
		ListenerImpl listImpl = new ListenerImpl();//實做一個名為listImpl的ListenerImpl
		b.setListener(listImpl);
		b.onClick();

		//2.使用匿名類別
		Button b2 = new Button();
		b2.setListener(new Listener() {
			@Override
			public void eventHappen() {
				System.out.println("匿名class,實作Listener interface");
			}
		});
		b2.onClick();
	}
}
 

沒有留言:

張貼留言