Android应用开发之Java基础篇——内部类
2010-10-14 06:19:00 来源:本站整理很多Android应用开发大部分都是用Java语言来开发,对于大多数从C/C++转入Android开发的开发人员Java语言会成为一道坎。当然有了C/C++语言基础,对于Java语言的语法理解应该问题不大,但是对于一些关键点儿还是有点儿迷惑,Simon将会就Android应用比较多的 java知识点——内部类进行一个介绍。
首先我们看一个例子:
//: innerclasses/Sequence.java
//// Holds a sequence of Objects.
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();
}
}
}
上面例子中暴露给用户一个接口Selector,然后在Sequence类中定义一个内部类SequenceSelector类继承Selector接口,这个内部类是私有的,外部将不能直接访问这个类。Sequence类定义一个公共方法,生成一个SequenceSelector对象,并把其向上转型成一个Selector接口。外部调用Selector接口来访问Sequence对象。
可以看出内部类的最大优势在于:通过内部类的向上转型,隐藏内部类的具体实现。
更多精彩
赞助商链接