这一章节我们来讨论一下内部类链接到外部类的几个方面。
上一章节主要展示了内部类封装一些实现,使得代码隐藏,但是内部类还可以链接到外部类,无需特殊条件,即可访问外部类的任何成员(属性域和方法),即它拥有外部类所有访问权限。
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