您的位置:首页 > 编程语言 > Java开发

从头认识java-8.11 为什么需要内部类?(2)

2015-11-15 22:19 405 查看
接着上一章节,上一章节主要讲述的是因为多重继承,这一章节我们来结束另外一个原因:闭包和内部框架。
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,因此本系列文章将忽略这一部分。请谅解。

总结:这一章节补充了为什么需要内部类的另一个原因,还有给出详细的例子说明。

这一章节就到这里,谢谢。
-----------------------------------
目录
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java