Java中的Inner Class (一)
Inner Class看起来是一个简单的Code-Hideing机制,但是Java的Inner Class和C++的有所不同 - Inner Class能够和外部类(Surrounding Class)直接打交道,而无任何限制。
当你创建一个内部类对象的时候,这个对象会保持同外部对象(the object of surrounding class)的联系,这样内部类对象可以自由的访问外部类对象的成员,没有任何限制。比如:
// 接口定义
interface Selector{
boolean end();
Object current();
void next();
}
// Sequence class
public class Sequence{
private Object[] items;
private int next = 0;
public Sequence(int size){ items = new Object[size]; }
pubic void add(Object x){
if (next < items.length)
items[next++] = x;
}
// 内部类实现Selector接口。
private class SequenceSelector impements Selector{
private int i = 0;
public boolean end() {return i == items.length;} //直接使用Sequence的成员。
Object current() { return items[i]; }
public void next() { if (i < items.length) i++; }
}
// 将内部类实现以Selector接口形式暴露出来。
public Selector getSelector() { return new SequenceSelector(); }
// 测试代码
public static void main(String[] args){
Sequence sequence = new Sequence(10);
for (int i = 0; i < 10; i++) sequence.add(Integer.toString(i));
Selector selector = sequence.getSelector();
while(!selector.end()){
System.out.print(selector.current() + " ");
selector.next();
}
}
}
//输出
0 1 2 3 4 5 6 7 8 9
从上面的代码中可以看出,inner class是一种非常好的隐藏代码的设计模式 - 而且非常方便,不必为out class和Inner class直接的交流而操心。
转载于:https://www.cnblogs.com/AllanDragoon/p/3251924.html
- 点赞
- 收藏
- 分享
- 文章举报
- 【JAVA核心技术卷一】Inner Class内部类&Proxy代理
- Java中Static Nested Class 和 Inner Class的不同
- 【Java面试题】11 什么是内部类?Static Nested Class 和 Inner Class的不同。
- Java內隐类(Java Inner Class)
- JAVA菜鸟入门(13) outer class与inner class的之间能互相使用field或者method吗?
- C# Inner Class vs. java 的inner class比较
- java 内部类(inner class)详解
- java Anonymous Inner Class(匿名内部类)
- java 内部类(inner class)详解
- Can we Override Private Method in Java? Inner Class?
- 【Java面试题】13 Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?
- Java Inner Class
- Java - 静态嵌套类(Static Nested Class)和内部类(Inner Class)的不同?
- 【Java】内部类(Inner Class)如何创建(new)
- Thinking in Java 学习记录(二) Inner Class
- java study 002 --inner class
- 2 event source & inner class DEMO(quote from Head First Java 2e)
- Java: 除了Inner Class之外的两种nested Class
- Java的内部类(Inner Class)和嵌套类(Nested Class)的区别
- inner class DEMO(quote from Head First Java 2e)