内部类直接不懂,这题得了一半分 —— 培训中心的JAVA测验题

conanca 2007-12-06 09:00:38
创建一个带三个方法的Interface U。创建一个带有“用创建匿名内部类方式返回U的引用的”方法的类A。再创建一个包含一个U的数组的类B。这个B应当有一个能将U的引用存进数组的方法,以及一个能将数组中的引用(根据方法的参数)设成null的方法,此外它还要有一个能遍历数组,并且能调用U的方法的方法。用main()创建一组A对象以及一个B对象。用由A对象返回的U的引用填满B。用B来回调A对象。从B里面删除掉一些U的引用。
...全文
92 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
conanca 2007-12-09
  • 打赏
  • 举报
回复
感谢楼上的,COPY下来研究下
篮球手 2007-12-08
  • 打赏
  • 举报
回复
// 创建一个带三个方法的Interface U
interface U {
void method1();
void method2();
void method3();
}

// 创建一个带有“用创建匿名内部类方式返回U的引用的”方法的类A
class A
{
U returnU() {
U uImpl = new U() {
public void method1() {
// 实现代码
}

public void method2() {
// 实现代码
}

public void method3() {
// 实现代码
}
};

return uImpl;
}
};

// 再创建一个包含一个U的数组的类B
class B
{
U[] us;

// 这个B应当有一个能将U的引用存进数组的方法
void setUs(int i, U uImpl) {
us[i] = uImpl;
}

void setUs(U[] us) {
this.us = us;
}

// 以及一个能将数组中的引用(根据方法的参数)设成null的方法
void setNull(int i) {
us[i] = null;
}

// 另外它还要有一个能遍历数组,并且能调用U的方法的方法
void traverse() {
for (int i = 0; i < us.length; i++) {
us[i].method1();
us[i].method2();
us[i].method3();
}
}
};

public class Main
{
public static void main(String[] args)
{
// 创建一个长度为5的A的数组
A[] as = new A[5];
U[] us = new U[5];
for (int i = 0; i < as.length; i++) {
as[i] = new A();
us[i] = as[i].returnU();
}

B b = new B();
// 用由A对象返回的U的引用填满B
b.setUs(us);

// 用B来回调A对象(回调我不会,此处未实现)

// 从B里面删除掉一些U的引用
b.setNull(0);
b.setNull(1);
}
}

62,623

社区成员

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

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