10.2连接到外部类java
一、当生成一个内部类的对象时,此对象与制造它的外围对象之间就有了一种联系,因此它能访问其外围对象的全部成员,而不须要任何特殊条件。code
interface Selector { boolean end(); Object current(); void next(); } public class Sequence { private Object [] items; private int next = 0; public Sequence(int size) { items = new Object[size]; } public void add(Object x) { if(next < items.length) items[next++] = x; } private class SequenceSelector implements Selector { private int i = 0; public boolean end() { return i == items.length; } public Object current() { return items[i]; } public void next() { if(i < items.length) i++; } } public Selector selector() { 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.selector(); while(!selector.end()) { System.out.print(selector.current() + " "); selector.next(); } } }
(1)要获取Sequence中的每个对象,能够使用Selector接口。对象
(2)内部类能够访问其外围类的方法和字段,就像本身拥有似的。接口
(3)内部类自动拥有对其外部类全部成员的访问权。这是如何作到的呢?it
当某个外围类的对象建立了一个内部类对象时,此内部类对象一定会秘密的捕获一个指向那个外围类对象的引用。class
(4)只有内部类是非static类时才能建立内部类对象。select