《疯狂Java讲义》——闭包和回调
来源:互联网 发布:一淘跟淘宝有关系吗 编辑:程序博客网 时间:2024/06/06 05:35
非静态内部类不仅记录了其外部内的详细信息,还保留了一个创建非静态内部类对象的引用,并且可以调用外部类的private成员,可以把非静态内部类当成面向对象领域的闭包。于是客户类可以通过非静态内部类的引用来调用外部类,即回调。
//教师接口interface Teachable{ void work();//work方法}//程序员类class Programmer{ private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } public Programmer(){} public Programmer(String name) { this.name = name; } //work方法 public void work() { System.out.println(name + "programming"); }}//Programer类的子类class TeachableProgrammer extends Programmer{ public TeachableProgrammer(){} public TeachableProgrammer(String name) { super(name);//调用其父类含参的构造方法 } //私有的teach方法 private void teach() { System.out.println("teaching"); } //非静态内部类实现教师接口 private class Closure implements Teachable { //实现其work方法 public void work() { teach();//调用外部类的私有的teach方法 } } //返回内部类的实例 public Teachable getCallbachReference() { return new Closure(); }}public class Test{ public static void main(String[] args) { TeachableProgrammer tp = new TeachableProgrammer("Jane"); tp.work();//调用继承自父类的work方法 //表面上调用的是Closure类的work方法 //实际上调用的是TeachableProgrammer的teach方法 tp.getCallbachReference().work(); }}
0 0
- 《疯狂Java讲义》——闭包和回调
- 疯狂java讲义笔记——数据类型
- 《疯狂JAVA讲义》——二维数组
- 《疯狂JAVA讲义》——多态
- 《疯狂JAVA讲义》——Singleton类
- 《疯狂Java讲义》——控制线程
- 《疯狂Java讲义》——数据类型
- 《疯狂Java讲义》——多线程学习
- 算术运算符—[疯狂java讲义]
- 赋值运算符—[疯狂java讲义]
- 比较运算符—[疯狂java讲义]
- 《疯狂JAVA讲义》之八——java标识符规则和关键字
- 《疯狂Java讲义》前言——如何学习Java
- 《疯狂Java讲义》——Java的运行机制
- 《疯狂Java讲义》——用JAVA实现五子棋
- 《疯狂JAVA讲义》之一——Java程序运行机制
- 《疯狂JAVA讲义》之七——java源文件综述
- 《疯狂JAVA讲义》之九——Java数据类型分类
- MATLAB计算昨天的日期
- 运行React-Native项目
- vim自动补全代码(代码提示)以及我的vim配置文件 .
- Android 官方推荐 : DialogFragment 创建对话框
- 如何请教问题且以后都会回答你的方法
- 《疯狂Java讲义》——闭包和回调
- 黑客游戏
- Android菜鸟认知——Intent和Intent filter初印象
- 原生态JAVAEE酒店管理系统系列五
- myeclipse加载项目,出现"大量红叉"
- windows下的C:\Windows\System32\drivers\etc\hosts
- HDU2852 KiKi's K-Number(二分+树状数组)
- Android SO逆向1-ARM介绍
- PAT_Basic 1011