Java中的嵌入类(二)
// 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——来限制对内部类的访问权限,这和别的类成员是一样的。
嵌入类的小结
被定义在别的类中的类被称为是嵌入类。和其他的类的成员一样,嵌入类可以被声明为是静态的或者是非静态的。非静态的嵌入类又被称为是内部类。内部类的实例是仅存在于包含它的外部类的实例中的,并且是可以访问其外部类的成员的, 即使这些成员是私有的。
下面的表格给出了嵌入类的类别:
类型
范围
内部类
静态嵌入类
成员
否
内部类(非静态的嵌入类)
成员
是
本地类(局部类)
本地(局部)
是
匿名类
仅限于定义它的地方
是