第3版中 第8章的一道题目 关于内部类的
题目如下:
创建一个接口U,它包含三个方法.创建第一个类A,它包含一个方法,在此方法中通过创建一个匿名内部类,来生成指向U的引用.创建第二个类B,它包含一个由U构造成的数组.B应该有几个方法,第一个方法可以接受对U的引用并存储到数组中;第二个方法将数组中的引用设为null;第三个方法遍历此数组,并在U中调用这些方法.在main()中,创建一组A的对象和一个B的对象.用那些A类对象所产生的U类型的引用填充B对象的数组.使用B回调所有的A的对象.再从B中一处某些U的引用.
以下是我的代码 这个题目说明了内部类的一些特性
package Unit8;
interface U{ //定义一个接口
void a();
void b();
void c();
}
class A{
private int a = 0; //类A的私有成员 注意这个
private String name;
public A(String name){
this.name = name;
}
public U f1(){ //返回接口U的引用
return new U(){
public void a(){System.out.println(name+':'+a);}
public void b(){a++;}
public void c(){}
};
}
}
class B{
public U[] arr = new U[10];
private int index = 0;
public void add(U u){
if(index <arr.length){
arr[index] = u;
index++;
}
else
System.out.print("The array has full");
}
public void clear(int index){
arr[index] = null;
}
public void go(){
for(int i=0;i<arr.length;i++){
arr[i].a();
arr[i].b();
arr[i].c();
}
}
}
public class Ex_28 {
public static void main(String[] args){
A a1 = new A("a1"); //创建三个A的实例
A a2 = new A("a2");
A a3 = new A("a3");
B b = new B();
for(int i=0;i<5;i++){ //A的每个实例分别返回U的引用放到B的数组里
b.add(a1.f1());
}
for(int i=0;i<3;i++){
b.add(a2.f1());
}
for(int i=0;i<2;i++){
b.add(a3.f1());
}
b.go(); //用B回调A 从输出结果上看 几个U的引用在操作各自的对象
}
}
//匿名内部类 可以引用它的外部类
输出
引用
a1:0
a1:1
a1:2
a1:3
a1:4
a2:0
a2:1
a2:2
a3:0
a3:1
分享到:
- 2007-02-07 14:48
- 浏览 2208
- 评论(0)
- 论坛回复 / 浏览 (0 / 2721)
- 查看更多
相关推荐
Think in java 源码构建编译
think in java 源码整理,应该算是比较全面的,有需要的朋友可以下下来看下
Think in java 的代码源码,里面很详细的习题详解
java think in java (英文第四版)至今为止 被认为是java教程之中权威作品之一
Think Data Structures in Java 英文azw3 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除
think in java 第四版 源码以及作业 eclipse版本 包含jar包 可以直接导入eclipse
这是java编程思想中的练习题,自己感觉不错,上传上去给大家分享~~~~~
Think in Java(美)Bruce Eckel 著 陈昊鹏 译 引言 同人类任何语言一样,Java为我们提供了一种表达思想的方式。如操作得当,同其他方式相 比,随着问题变得愈大和愈复杂,这种表达方式的方便性和灵活性会显露无遗。 ...
Think in java 教程 Think in java 教程
学习think in java 时的第9章的例题及练习答案。 eclipse 工程包,运行可用!全自己敲的!
抽象的进步 1.2 对象的接口 1.3 实现方案的隐藏 1.4 方案的重复使用 1.5 继承:重新使用接口 1.5.1 改善基础类 1.5.2 等价和类似关系 1.6 多形对象的互换使用 1.6.1 动态绑定 ...1.11 Java和因特网
Think in Java 作者的文章 精辟见解
第二部分与源代码
Think In Enterprise Java v1.1
编程思想第四版完整中文高清版(免费)TXT格式
经典的think in java4,所有源码,帮你早日攻克java学习的堡垒!!!
从一程序员朋友手里tiang来的,看看对你有帮助
think in Java答案
1.11 Java和因特网 1.11.1 什么是Web? 1.11.2 客户端编程 1.11.3 服务器端编程 1.11.4 一个独立的领域:应用程序 1.12 分析和设计 1.12.1 不要迷失 1.12.2 阶段0:拟出一个计划 1.12.3 阶段1:要制作什么?...
think in java Chinese 个人整理