内部类的使用2--链接到外部类

来源:互联网 发布:延时摄影制作软件 编辑:程序博客网 时间:2024/06/03 14:41

我们先来看一段用java类库写的代码:

如果我们也想写一个类似的结构来屏蔽类型的进行遍历应该怎么写呢?

内部类是个好办法。

上面就是用了匿名的内部类来实现了一个iterator1接口,因为内部类能够访问外部类的元素,就使得它拥有了遍历外部元素的能力。

为啥它能访问外部类呢,因为在内部类中会有一个外部类的引用,可以使用A.this得到。

 

嵌套类

static类型的内部类,没有了那个外部类的引用。但是它特殊的地方在于,可以放到接口中,我们还可以利用它来测试,单独写在类的内部,写个main方法进行测试,因为它编译的时候会形成单独的类,在程序运行的时候可以统一去掉。

 

内部类的继承

内部类也是可以继承的,不过因为要构建内部类,必须要先构造外部类,因此在子类的构造器中必须要有显示的父类构造器的调用:

 

内部类与回调

先看个例子:

 

这个是个回调,类似于命令模式。回调的概念不太好解释,就是给一个类B赋值接口A的实例,然后在类C中使用B的时候,会从B中回调A的方法。
上面的例子中因为有一个命令类已经继承了一个,并且基类中存在类命令接口中的方法。这样如果这个类在实现命令接口就会冲突,为了他也能够使用命令的方式,就需要实用类来实现这种操作了。

如果上面的例子,把set方法改为add,然后用一个List保存command。callBack()方法中改为循环调用就是一个比较正规的命令模式了。

 

内部类的使用方式大概就这么多了,大大丰富了我们编程的手段和技巧,可以在结构上有很多巧妙的运用。

 

原创粉丝点击