第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
- 浏览 2241
- 评论(0)
- 论坛回复 / 浏览 (0 / 2734)
- 查看更多
相关推荐
在《Think in Java》中,你将深入学习如何实现继承,以及何时和为什么应该使用它。 "多态"是另一种关键的面向对象概念,它允许使用父类引用操作不同子类的对象。多态性增强了代码的灵活性,使得程序在运行时可以...
"Think in Java第三版代码"则提供了书中习题和示例的源代码,便于读者理解和实践。 在提供的压缩包文件中,我们可以看到以下文件: 1. `tij.jcsc`:这可能是《Think in Java》书中某个章节或习题的Java类文件,...
以下是对《Think in Java》源码中一些重要知识点的详细解读: 1. **面向对象编程基础**:书中通过丰富的例子展示了类、对象、封装、继承和多态等面向对象编程的基本概念。源码中你可以看到如何定义类,如何创建对象...
java think in java (英文第四版)至今为止 被认为是java教程之中权威作品之一
《Think in Java 3》是一本深受欢迎的Java编程指南,由Bruce Eckel撰写,它以其详尽的解释和丰富的示例闻名。这本书是许多Java初学者和专业开发者的重要参考资料,旨在帮助读者深入理解Java语言的核心概念和机制。...
《Think in Java》是 Bruce Eckel 的经典著作,它深入浅出地讲解了Java编程语言的核心概念和技术。这本书强调理解编程思想,而不仅仅是学习语法。练习题是学习过程中的重要部分,它们帮助我们巩固理论知识,提升实际...
Think in java 源码构建编译
Think Data Structures in Java 英文azw3 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除
《Think In Java 4》是Java编程领域里一本极具影响力的著作,由资深程序员 Bruce Eckel 编著。这本书以其深入浅出的讲解方式和全面的知识覆盖而闻名,被誉为Java学习者的经典读物。中文版的完美高清版本为国内读者...
think in java 第四版 源码以及作业 eclipse版本 包含jar包 可以直接导入eclipse
Think in Java(美)Bruce Eckel 著 陈昊鹏 译 引言 同人类任何语言一样,Java为我们提供了一种表达思想的方式。如操作得当,同其他方式相 比,随着问题变得愈大和愈复杂,这种表达方式的方便性和灵活性会显露无遗。 ...
《Think in Java 4》是Java编程领域的一部经典之作,由Bruce Eckel撰写,它以其深入浅出的讲解方式和丰富的示例代码深受程序员喜爱。这个压缩包包含的就是这本书的全部源代码,旨在帮助读者更好地理解和实践书中所...
《Think in JAVA 编程思想》是Java编程领域的一本经典著作,由Bruce Eckel撰写。第四版作为该书的最新版本,包含了作者对Java语言深入的理解和丰富的编程经验,旨在帮助读者理解面向对象编程的核心理念,并提升编程...
以上就是《Think in Java》第11章“持有对象”中的核心知识点,理解并掌握这些概念对于深入理解和使用Java对象是非常重要的。通过实践和编程练习,你可以更好地领悟这些知识,并应用到实际项目中。
在这个压缩包中包含的"thinkinjava.chm"文件就是《Think in Java》的中文版CHM电子书。 该书中涵盖了Java语言的基础知识,包括但不限于: 1. **基础语法**:变量、数据类型、运算符、流程控制(如if-else、switch...
《Think in Java 3(中文完整版)》是Java编程领域的一本经典著作,由Bruce Eckel撰写,针对中文读者提供了完整的翻译版本。这本书旨在帮助读者深入理解Java语言,建立起面向对象编程的思想,并掌握实际开发中的技巧。...
think in java think in java think in java think in java think in java think in java
抽象的进步 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》中,作者从最基础的语法结构开始讲解,包括变量、数据类型、运算符、流程控制语句(如if、for、while)、方法定义与调用等。这些内容是所有程序设计的基础,无论你是在做何种类型的Java应用,都...