看看thinkinjava这里是什么意思?

yixia 2002-06-06 11:21:43
7.6.3 链接到外部类
迄今为止,我们见到的内部类好象仅仅是一种名字隐藏以及代码组织方案。尽管这些功能非常有用,但似乎并不特别引人注目。然而,我们还忽略了另一个重要的事实。创建自己的内部类时,那个类的对象同时拥有指向封装对象(这些对象封装或生成了内部类)的一个链接。所以它们能访问那个封装对象的成员——毋需取得任何资格。除此以外,内部类拥有对封装类所有元素的访问权限(注释②)。下面这个例子阐示了这个问题:

//: Sequence.java
// Holds a sequence of Objects

interface Selector {
boolean end();
Object current();
void next();
}

public class Sequence {
private Object[] o;
private int next = 0;
public Sequence(int size) {
o = new Object[size];
}
public void add(Object x) {
if(next < o.length) {
o[next] = x;
next++;
}
}
private class SSelector implements Selector {
int i = 0;
public boolean end() {
return i == o.length;
}
public Object current() {
return o[i];
}
public void next() {
if(i < o.length) i++;
}
}
public Selector getSelector() {
return new SSelector();
}
public static void main(String[] args) {
Sequence s = new Sequence(10);
for(int i = 0; i < 10; i++)
s.add(Integer.toString(i));
Selector sl = s.getSelector();
while(!sl.end()) {
System.out.println((String)sl.current());
sl.next();
}
}
} ///:~





...全文
40 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
micromai 2002-06-07
  • 打赏
  • 举报
回复
其实很简单,这个例子主要讲的是:如果一个类中含有一个内部类,那么这个内部类可以访问这个类的各个成员变量(在本例中就是 private Object[] o;)和函数。
pauloxu 2002-06-07
  • 打赏
  • 举报
回复
就是把对象给封装起来啊?
OO的基本特征?
goatzx 2002-06-07
  • 打赏
  • 举报
回复
内部类可以直接访问外部类的所有成员变量和方法(无论是private还是public),但是外部类却不能直接访问内部类,如果要访问必须先实例化内部类(即获得内部类的应用)。
dimstar 2002-06-06
  • 打赏
  • 举报
回复
封装对象就是Sequence的实例,比如:
Sequence s = new Sequence ();
Selector selector = s.getSelector();//s就是selector的封装对象
然后就可以用selector来访问储存在s中的对象了。
yixia 2002-06-06
  • 打赏
  • 举报
回复
其中内部类的对象是
public Selector getSelector() {
return new SSelector();
} 把?


那么"那个类的对象同时拥有指向封装对象(这些对象封装或生成了内部类)的一个链接"

封装对象是什么?

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧