接着上一章节,上一章节主要讲述的是因为多重继承,这一章节我们来结束另外一个原因:闭包和内部框架。
1.闭包
闭包是可以包含自由(未绑定到特定对象)变量的代码块;这些变量不是在这个代码块内或者任何全局上下文中定义的,而是在定义代码块的环境中定义(局部变量)。
其实是说白了,闭包的作用就是,之前你已经建立了对象,而且在对象里面存储了某些状态,然后现在你通过内部类,拿到对象的引用,从而取得现有状态,用在当前的代码里面。
package com.ray.ch08;
public class MyClass extends Test2 {
private int id = 0;
@Override
public void test() {
super.test();
id++;
System.out.println(id);
}
public Test1 getClosure() {
return new Closure();
}
private class Closure implements Test1 {
@Override
public void test() {
MyClass.this.test();//我们在这里取回现在对象的引用。
}
}
public static void main(String[] args) {
MyClass myClass = new MyClass();
myClass.test();
Test1 myClass2 = myClass.getClosure();
myClass2.test();
myClass2.test();
Test1 myClass3 = myClass.getClosure();
myClass3.test();
}
}
interface Test1 {
void test();
}
abstract class Test2 {
public void test() {
System.out.println("Test2 test");
};
}
输出:
Test2 test
1
Test2 test
2
Test2 test
3
Test2 test
4
从输出的上面看出,id的值一直都在变化,那么其实对象的状态一直都在改变,然后我们引用的都是同一个对象。
2.内部框架
这里主要使用在swing上面,特别是事件上面,因为大部分的时候我们都不需要swing,因此本系列文章将忽略这一部分。请谅解。
总结:这一章节补充了为什么需要内部类的另一个原因,还有给出详细的例子说明。
这一章节就到这里,谢谢。
-----------------------------------
目录
分享到:
相关推荐
Aruba-Instant-8.11.2.0-User-Guide
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
Alibaba Dragonwell,一款由阿里巴巴集团推出的免费OpenJDK发行版,为开发者们提供了一个稳定且高效的Java运行环境。它以OpenJDK为基础,并在其中融入了阿里巴巴自身的技术积累,致力于提供长期支持,包括持续的性能...
资源分类:Python库 所属语言:Python 使用前提:需要解压 资源全名:phonenumberslite-8.11.5-py2.py3-none-any.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
Aruba 503 Series Campus Access Points Other Accessories Aruba 560 Series Outdoor Access Points Aruba 500H Series Hospitality Access Points Aruba 500 Series Campus Access Points
2021人教版数学一年级上册课件-8.11 整理和复习.pptx
VC++经验技巧宝典配套代码08章8.6-8.11 包括: 8.6图像基础技术 8.7多媒体声音控制 8.8多媒体应用 8.9动画效果 8.10多媒体文件的播放 8.11Direct Show编程 8.1-8.5已上传
Aruba Access Points v8.11.2.0 (SSR) Aruba 318 Series Hardened Access Points Aruba 370 Series Outdoor Access Points Aruba 310 Series Campus Access Points IAP-315 IAP-314
Aruba Access Points v8.11.2.0 (SSR) Aruba 360 Series Outdoor Access Points Aruba 303 Series Campus Access Points Aruba 303H Series Hospitality Access Points Aruba 300 Series Campus Access Points IAP...
Aruba Access Points v8.11.1.1 (SSR) 适用于以下产品 Aruba 360 Series Outdoor Access Points Aruba 303 Series Campus Access Points Aruba 303H Series Hospitality Access Points Aruba 300 Series Campus ...
Aruba Access Points v8.11.2.0 (SSR) Aruba 610 Series Campus Access Points
Aruba Access Points v8.11.1.0 (SSR) 适用于 Aruba 610 Series Campus Access Points
Aruba Access Points v8.11.2.0 (SSR) Aruba 650 Series Campus Access Points Aruba 630 Series Campus Access Points
Aruba Access Points v8.11.1.1 (SSR) 适用于以下产品 Aruba 610 Series Campus Access Points
标题"BMP2KLD凯立德开机画面的DIY-8.11最终版"涉及到的是凯立德导航系统的自定义开机画面功能。这个DIY(Do It Yourself)项目允许用户根据个人喜好调整开机时显示的图像,为凯立德导航软件增添个性化元素。 凯立德...
Aruba Access Points v8.11.2.0 (SSR) Aruba 518 Series Hardened Access Points Aruba 570 Series Outdoor Access Points Aruba 510 Series Campus Access Points
Aruba Access Points v8.11.1.1 (SSR) 适用于以下系列产品 Aruba 650 Series Campus Access Points Aruba 630 Series Campus Access Points
Aruba Access Points v8.11.1.0 (SSR) 适用于以下型号 Aruba 650 Series Campus Access Points Aruba 630 Series Campus Access Points
Aruba Access Points v8.11.2.0 (SSR) Aruba 580EX Series Hazardous Location Access Points Aruba 580 Series Outdoor Access Points Aruba 550 Series Campus Access Points Aruba 530 Series Campus Access ...