Java中的嵌入类(二)

2014-11-24 11:52:21 · 作者: · 浏览: 23
// inner class implements theIterator pattern
private classInnerEvenIterator {
// start stepping throughthe array from the beginning
private int next = 0;
public boolean hasNext() {
// check if a currentelement is the last in the array
return (next <=SIZE - 1);
}
public int getNext() {
// record a value ofan even index of the array
int retValue =arrayOfInts[next];
//get the next evenelement
next += 2;
return retValue;
}
}
public static void main(Strings[]) {
// fill the array withinteger values and print out only
// values of even indices
DataStructure ds = newDataStructure();
ds.printEven();
}
}
其输出结果如下;
0 2 4 6 8 10 12 14
注意在上面的程序中,内部类InnerEventIterator中直接访问了DataStructure类的实例变量。
内部类可以被用来实现诸如上述代码中的起辅助功能的类。如果我们的程序需要处理用户交互事件,那么我们有必要知道如何使用内部类,因为事件处理机制中大量地采用了内部类。
本地和匿名的内部类
除了上面所说之外,还有两种特别的内部类。在方法中声明的内部类被称为是本地内部类(Local inner class)。另外还在在方法中声明没有命名的内部类,这些类被称为是匿名内部类(anonymous inner class)。我们会在高级的java编程中遇到这些类。
修饰符
可用于内的其他成员的修饰符都可用于修饰内部类。例如,可以使用访问限定修饰符——private,public和protected——来限制对内部类的访问权限,这和别的类成员是一样的。
嵌入类的小结
被定义在别的类中的类被称为是嵌入类。和其他的类的成员一样,嵌入类可以被声明为是静态的或者是非静态的。非静态的嵌入类又被称为是内部类。内部类的实例是仅存在于包含它的外部类的实例中的,并且是可以访问其外部类的成员的, 即使这些成员是私有的。
下面的表格给出了嵌入类的类别:
类型
范围
内部类
静态嵌入类
成员
内部类(非静态的嵌入类)
成员
本地类(局部类)
本地(局部)
匿名类
仅限于定义它的地方