内部类之设计模式-内部类可以访问外部类的私有成员

本文介绍了一个简单的Java程序,该程序定义了一个Sequence类用于处理对象序列,并通过内部类SequenceSelector实现了选择器的功能。Sequence类允许添加对象到序列中,并提供了一个选择器来遍历这些对象。SequenceSelector能够检查序列是否结束、获取当前对象以及移动到序列中的下一个对象。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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.println(selector.current() + " ");
   selector.next();
  }
 }
}

 

内部类自动用用外围对象的访问权

   这是因为  当外围对象创建了一个内部对象的时候   内部对象会秘密的捕捉一个指向外围对象的引用 然后在你访问外围对象的成员的时候  就是靠那个引用来访问外围成员

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值