/**
闭包和回调的练习
*/
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();
}
}