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

接着上一章节,上一章节主要讲述的是因为多重继承,这一章节我们来结束另外一个原因:闭包和内部框架。

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,因此本系列文章将忽略这一部分。请谅解。


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


这一章节就到这里,谢谢。

-----------------------------------

目录


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值