Java 中Inner Class的用法(1)

Inner Class得你可以在一个类中把逻辑意义相同的部分放在一起,便于管理。起初学习Inner Class会有些疑惑,下面通过两个示例来说明Inner Class的用法。

1. Outer Class 的成员函数可以像访问其他类一样来访问Inner Class([b]来自thinking in java[/b]),除此之外,必须用OutClass.InnerClass的形式访问Inner Class(例如main函数)。
public class Parcel {
class Destination{
private String label;
public Destination(String whereTo){
this.label = whereTo;
}
String readLabel(){
return label;
}
}

public Destination to(String s){
return new Destination(s);
}

public void ship(String dest){
Destination d = to(dest);
System.out.println(d.readLabel());
}

public static void main(String[] args){
Parcel p = new Parcel();
p.ship("Beijing");
Parcel q = new Parcel();
Parcel.Destination d = q.to("ShangHai");
System.out.println(d.readLabel());
}
}

2. Inner Class保存一个指向Outer Class的指针,因此可以访问Outer Class的任何成员。下面的例子同时是一个迭代器模式的例子。

interface Iterator {
public Object next();
public boolean hasNext();
}

public interface Aggregrate {
public Iterator iterator();
}

public class Sequence implements Aggregrate{

private Object[] items;
private int index = 0;

public Sequence(int capacity){
items = new Object[capacity];
}

public void add(Object o){
if(index < items.length){
items[index++] = o;
}
}

private class SequenceIterator implements Iterator{

private int currentIndex = 0;
public boolean hasNext() {
return currentIndex < index;
}

public Object next() {
return items[currentIndex++];
}
}
public Iterator iterator(){
return new SequenceIterator();
}

public static void main(String[] args){
Sequence s = new Sequence(10);
for(int i = 0; i <9; i++){
s.add(Integer.toString(i) + " ");
}
Iterator iter = s.iterator();
while(iter.hasNext()){
String item = (String)iter.next();
System.out.print(item);
}
}

}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值