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(); } }