Java内部类链接到外部类

内部类拥有外围类的所有元素的访问权

package com.ran.unit8;

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;
        @Override
        public boolean end() {
            return i==items.length; //内部类可以访问其外部类的方法和字段
        }

        @Override
        public Object current() {
            return items[i];
        }

        @Override
        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();
        }

    }
}

猜你喜欢

转载自blog.csdn.net/lll0101/article/details/88821018