`
天之魔神
  • 浏览: 28596 次
  • 性别: Icon_minigender_1
  • 来自: 天津
文章分类
社区版块
存档分类
最新评论

Think in Java 中一道有意思的题目

    博客分类:
  • Java
阅读更多
第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
分享到:
评论

相关推荐

    Think in java 中文第四版第二部分 (非扫描,瑕疵版)

    在《Think in Java》中,你将深入学习如何实现继承,以及何时和为什么应该使用它。 "多态"是另一种关键的面向对象概念,它允许使用父类引用操作不同子类的对象。多态性增强了代码的灵活性,使得程序在运行时可以...

    Think in java第三版代码

    "Think in Java第三版代码"则提供了书中习题和示例的源代码,便于读者理解和实践。 在提供的压缩包文件中,我们可以看到以下文件: 1. `tij.jcsc`:这可能是《Think in Java》书中某个章节或习题的Java类文件,...

    think in java source code

    以下是对《Think in Java》源码中一些重要知识点的详细解读: 1. **面向对象编程基础**:书中通过丰富的例子展示了类、对象、封装、继承和多态等面向对象编程的基本概念。源码中你可以看到如何定义类,如何创建对象...

    think in java 英文第四版 高清完整PDF版

    java think in java (英文第四版)至今为止 被认为是java教程之中权威作品之一

    Think in Java3

    《Think in Java 3》是一本深受欢迎的Java编程指南,由Bruce Eckel撰写,它以其详尽的解释和丰富的示例闻名。这本书是许多Java初学者和专业开发者的重要参考资料,旨在帮助读者深入理解Java语言的核心概念和机制。...

    think in java 练习

    《Think in Java》是 Bruce Eckel 的经典著作,它深入浅出地讲解了Java编程语言的核心概念和技术。这本书强调理解编程思想,而不仅仅是学习语法。练习题是学习过程中的重要部分,它们帮助我们巩固理论知识,提升实际...

    Think in java 源码构建编译

    Think in java 源码构建编译

    Think Data Structures in Java azw3

    Think Data Structures in Java 英文azw3 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除

    Think In Java 4(完美高清中文版).

    《Think In Java 4》是Java编程领域里一本极具影响力的著作,由资深程序员 Bruce Eckel 编著。这本书以其深入浅出的讲解方式和全面的知识覆盖而闻名,被誉为Java学习者的经典读物。中文版的完美高清版本为国内读者...

    think in java 4 源码 eclipse工程版

    think in java 第四版 源码以及作业 eclipse版本 包含jar包 可以直接导入eclipse

    Think in java(中文版)优质排版

    Think in Java(美)Bruce Eckel 著 陈昊鹏 译 引言 同人类任何语言一样,Java为我们提供了一种表达思想的方式。如操作得当,同其他方式相 比,随着问题变得愈大和愈复杂,这种表达方式的方便性和灵活性会显露无遗。 ...

    think in java4源代码

    《Think in Java 4》是Java编程领域的一部经典之作,由Bruce Eckel撰写,它以其深入浅出的讲解方式和丰富的示例代码深受程序员喜爱。这个压缩包包含的就是这本书的全部源代码,旨在帮助读者更好地理解和实践书中所...

    Think in JAVA 编程思想 第四版 清晰扫描版

    《Think in JAVA 编程思想》是Java编程领域的一本经典著作,由Bruce Eckel撰写。第四版作为该书的最新版本,包含了作者对Java语言深入的理解和丰富的编程经验,旨在帮助读者理解面向对象编程的核心理念,并提升编程...

    think in java 第11章 持有对象

    以上就是《Think in Java》第11章“持有对象”中的核心知识点,理解并掌握这些概念对于深入理解和使用Java对象是非常重要的。通过实践和编程练习,你可以更好地领悟这些知识,并应用到实际项目中。

    think-in-java

    在这个压缩包中包含的"thinkinjava.chm"文件就是《Think in Java》的中文版CHM电子书。 该书中涵盖了Java语言的基础知识,包括但不限于: 1. **基础语法**:变量、数据类型、运算符、流程控制(如if-else、switch...

    Think in java3(中文完整版)

    《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 think in java

    Think In Java.chm

    抽象的进步 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 Java》中,作者从最基础的语法结构开始讲解,包括变量、数据类型、运算符、流程控制语句(如if、for、while)、方法定义与调用等。这些内容是所有程序设计的基础,无论你是在做何种类型的Java应用,都...

Global site tag (gtag.js) - Google Analytics