java闭包

/**
闭包和回调的练习
*/
package frank;
import java.lang.*;
public class App
{
	public static void main(String[] args)
	{
		TeachableProgrammer tp = new TeachableProgrammer("frank");
		tp.work();//继承超类的方法
		tp.getCallbackRefences().work();//获得内部类的引用然后调用外部类的方法》
	}
}
/**
教学
*/
interface Teachable
{
	void work();
}
/**
编程
*/
class Programmer
{
	private String name;
	public Programmer(){}
	public Programmer(String name)
	{
		this.name = name;
	}
	public void setName(String name)
	{
		this.name = name;
	}
	public String getName()
	{
		return this.name;
	}
	public void work()
	{
		System.out.println("在灯下认真敲代码!");
	}
}
class TeachableProgrammer extends Programmer
{
	public TeachableProgrammer(){}
	public TeachableProgrammer(String name)
	{
		super(name);
	}
	private void tech()
	{
		System.out.println(getName()+" 教师在台上讲课!");
	}
	private class Closure implements Teachable
	{
		public void work()
		{
			tech();
		}
	}
	public Teachable getCallbackRefences()//回调,返回父类型的引用
	{
		return new Closure();
	}
}

  

posted on 2013-09-10 23:07  wp456  阅读(174)  评论(0)    收藏  举报

导航