《java编程思想》学习笔记——内部类二

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

相关文章
相关标签/搜索