package T3; interface Teachable{ void work(); } public class Programmer { private String name; public Programmer(){} public Programmer(String name){ this.name = name;} public String getName() { return name; } public void setName(String name) { this.name = name; } public void work(){ System.out.println(name+"在灯下认真敲键盘"); } }
--------------------------------- package T3; public class TeachableProgram extends Programmer { public TeachableProgram(){} public TeachableProgram(String name){super(name);} private void teach(){ System.out.println(getName()+"教师在讲台上讲解"); } private class Closure implements Teachable{ @Override public void work() { teach(); } } public Teachable getCallbackReference(){ return new Closure(); } public static void main(String[] args) { TeachableProgram t=new TeachableProgram("李刚"); t.work(); t.getCallbackReference().work(); } }