这一章节我们来讨论一下内部类链接到外部类的几个方面。
上一章节主要展示了内部类封装一些实现,使得代码隐藏,但是内部类还可以链接到外部类,无需特殊条件,即可访问外部类的任何成员(属性域和方法),即它拥有外部类所有访问权限。
package com.ray.ch08;
public class Test {
private int id = 0;
public String name = "aaa";
private void say() {
System.out.println("Class Test Method say");
}
public void run() {
}
class Destination {
private void print() {
System.out.println(id);// 这里的id是int com.ray.ch08.Test.id
}
private void say() {
say();// Class Test Method say
System.out.println("Class Destination Method say");
}
}
private class Content {
private String a = name;
private void run() {
run();// Class Test Method run
}
}
}
下面我们来展示一下内部类与迭代器模式之间的关系。
其实就是迭代器的实现。
package com.ray.ch08;
public class Sequence {
private Object[] items;
private int next = 0;
public Sequence(int num) {
items = new Object[num];
}
public void add(Object item) {
for (int i = 0; i < items.length; i++) {
items[i] = item;
}
}
private class SequenceSelector implements Selector {
private int i = 0;
@Override
public boolean end() {
return items.length == i;
}
@Override
public void next() {
if (items.length > i) {
i++;
}
}
@Override
public Object current() {
return items[i];
}
}
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(i);
}
Selector selector = sequence.getSelector();
while (!selector.end()) {
System.out.println(selector.current());
selector.next();
}
}
}
interface Selector {
boolean end();
void next();
Object current();
}这一章节就到这里,谢谢。
-----------------------------------
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文:http://blog.csdn.net/raylee2007/article/details/49765415