内部类(inner class)

为了查看内部类使用,首先考虑用一个数组。下面的例子中,你创建一个数组,存放整数。然后按升序顺序输出。
DataStructure.java包含以下部分:

  • 外部类DataStructure包含一个构造器来创建实例,这实例包含一组连续的整数值(0,1,2,3等等)和一个打印元素的方法。
  • 内部类EventIterator,实现了DataStructureIterator接口,这接口继承Iterator< Integer>接口。Iterators被用于遍历一个数据结构和测试最后元素的方法。检索当前元素,删除下一个元素等。
  • 一个main方法,实例化一个DataStructure对象,然后调用printEven方法来打印出数组arrayOfInts中的元素。
public class DataStructure{
    private final static int SIZE=15;
    private int[] arrayOfInts = new int[SIZE];
    public DataStructure(){
        for(int i=0;i<SIZE;i++){
            arrayOfInts[i]=i;
        }
    }
    public void printEven(){
        DataStructureIterator iterator = this.new EvenIterator();
        while(iterator.hasNext()){
            System.out.print(iterator.next()+" ");
        }
        System.out.println();
    }
    interface DataStructureIterator extends java.util.Iterator<Integer>{}
    private class EvenIterator implements DataStructureIterator{
        private int nextIndex = 0;
        public boolean hasNext(){
            return (nextIndex<=SIZE-1);
        }
        public Integer next(){
            Integer retValue = Integer.valueOf(arrayOfInts[nextIndex]);
            nextIndex+=2;
            return retValue;
        }
    }
    public static void main(String... args){
        DataStructure ds = new DataStructure();
        ds.printEven();
    }
}

运行结果:

0 2 4 6 8 10 12 14 

类EvenInterator直接饮用DataStructure对象的arrayOfInts属性。
你可以使用内部类来实现帮助类,如这个例子所示。为了处理用户接口事件,你必须知道怎么使用内部类,因为事件处理机制广泛被使用。

局部内部类和匿名内部类
有两种内部类,你可以再一个方法体中声明一个内部类,即为局部类;你也可以声明一个只有主体而没有名字的内部类,即为匿名类。

修饰符
你可以像其他外部类成员使用修饰符一样给内部类使用。例如,你可以使用访问权限如private,public,protected来限制对内部类的访问,就如同使用它们来限制其他类成员限制一样。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值