`
李灵晖-raylee
  • 浏览: 135719 次
博客专栏
Group-logo
从头认识java
浏览量:0
文章分类
社区版块
存档分类
最新评论

从头认识java-8.2 链接到外部类

 
阅读更多

这一章节我们来讨论一下内部类链接到外部类的几个方面。

上一章节主要展示了内部类封装一些实现,使得代码隐藏,但是内部类还可以链接到外部类,无需特殊条件,即可访问外部类的任何成员(属性域和方法),即它拥有外部类所有访问权限。

package com.ray.ch08;

public class Test {
	private int id = 0;

	public String name = "aaa";

	private void say() {
		System.out.println("Class Test Method say");
	}

	public void run() {
	}

	class Destination {
		private void print() {
			System.out.println(id);// 这里的id是int com.ray.ch08.Test.id
		}

		private void say() {
			say();// Class Test Method say
			System.out.println("Class Destination Method say");
		}

	}

	private class Content {
		private String a = name;

		private void run() {
			run();// Class Test Method run
		}
	}

}

上面的例子充分展现了内部类访问外部类的各种权限,从私有域到私有方法再到公有域和方法。


下面我们来展示一下内部类与迭代器模式之间的关系。

其实就是迭代器的实现。

package com.ray.ch08;

public class Sequence {
	private Object[] items;

	private int next = 0;

	public Sequence(int num) {
		items = new Object[num];
	}

	public void add(Object item) {
		if(next<items.length){
			items[next++] = item;
		}
	}

	private class SequenceSelector implements Selector {
		private int i = 0;

		@Override
		public boolean end() {
			return items.length == i;
		}

		@Override
		public void next() {
			if (items.length > i) {
				i++;
			}
		}

		@Override
		public Object current() {
			return items[i];
		}
	}

	public Selector getSelector() {
		return new SequenceSelector();
	}

	public static void main(String[] args) {
		Sequence sequence = new Sequence(10);
		for (int i = 0; i < 10; i++) {
			sequence.add(i);
		}
		Selector selector = sequence.getSelector();
		while (!selector.end()) {
			System.out.println(selector.current());
			selector.next();
		}
	}

}

interface Selector {
	boolean end();

	void next();

	Object current();
}

总结:这一章节主要讲述了内部类链接到外部类,以及迭代器的实现。


这一章节就到这里,谢谢。

-----------------------------------

目录




分享到:
评论

相关推荐

    mchange-commons-java-0.2.11.zip

    开发者可以通过将这些类文件打包到一起,创建出可以在Java虚拟机(JVM)上运行的可执行程序或库。 标签 "jar" 和 "java" 明确了这个文件与Java编程语言和JAR文件格式的关系。Java开发者经常使用JAR文件来分发和部署...

    eclipse-java-2021-12-R-win32-x86_64.zip

    用户可以轻松地导入现有的Java项目,或者从头开始创建新的项目,包括Maven或Gradle构建系统。 3. **构建工具**:Eclipse 集成了构建工具,如Ant和Maven,使得构建和管理项目依赖变得简单。对于现代Java开发,Maven...

    api-ntrip-java-client-master.zip_android_ntrip_ntrip java实现_ntr

    - **Android Socket编程**:使用Java的Socket类建立与NTRIP服务器的连接,收发数据。 - **JSON或XML解析**:NTRIP数据可能以这两种格式传输,需要解析成Java对象。 - **Android权限管理**:可能需要获取网络访问权限...

    aip-java-sdk-4.2.0

    2. **aip-java-sdk-4.2.0.jar**:这是核心的AIP Java SDK库文件,包含了所有用于与百度AI平台交互的类和方法。开发者需要引入这个jar文件到他们的Android项目中,才能使用SDK提供的功能。 3. **json-20160810.jar**...

    aspose-words-java-23.6-jdk17.jar.zip

    开发人员可以通过将其添加到项目类路径中,快速开始处理文档任务。 Aspose.Words的功能丰富多样,包括但不限于以下几点: 1. **文档创建**:支持从头创建新的文档,或基于现有模板生成文档。 2. **文档读取和解析*...

    手把手 - 微服务 Windows 开发环境从头搭建 2022-09-05 直播录像 - 软件安装包-2.zip

    【标题】: "手把手 - 微服务 Windows 开发环境从头搭建 2022-09-05 直播录像 - 软件安装包-2.zip" 这个压缩包文件包含了搭建微服务开发环境所需的基础软件,包括JDK(Java Development Kit)和MySQL数据库。...

    java-Swing外观包

    在"Swing外观包.jar"这个文件中,可能包含了一些预设的LookAndFeel实现或者定制的LookAndFeel类,以便开发者可以直接导入并应用于他们的项目中,无需从头开始编写。这大大简化了创建独特界面的过程,使得开发者可以...

    java-多文件上传dome

    在Java编程中,多文件...通过这个"java-多文件上传dome"工具包,你可以快速实现上述功能,无需从头编写所有代码。不过,记得在实际项目中,除了功能实现,还要关注性能、安全性和可维护性,确保应用程序的稳定运行。

    JAVA编程高级-工具类.pdf

    `Object`类是所有Java类的基类,也就是说所有的类都直接或间接地继承自`Object`。因此,`Object`类中定义的方法可以在所有类中使用。 - **Object类常用方法** - `public boolean equals(Object obj)`:比较两个...

    java-lib

    2. **数据库操作**:JDBC(Java Database Connectivity)是Java标准的数据库连接库,允许程序与各种类型的数据库进行交互。除此之外,还有像Hibernate和MyBatis这样的对象关系映射(ORM)框架,它们简化了SQL查询,...

    Java---笔试题大全

    Java是一种广泛使用的面向对象的编程语言,其特点包括抽象、继承、封装和多态性。在Java笔试中,这些概念经常被考察。 1. **面向对象的特征**: - **抽象**:抽象是将复杂问题简化的过程,分为过程抽象(方法)和...

    curso-java-pildorasInf:从头开始学习Java

    【标题】:“curso-java-pildorasInf:从头开始学习Java” 这门“从头开始学习Java”的课程,源自"PillsInformática"的教育资源,旨在为初学者提供全面的Java编程知识。Java是一种广泛使用的面向对象的编程语言,由...

    使用渲染脚本实现模糊视图背景 - Java - 下载.zip

    1. **源代码**:这是实现模糊视图背景的核心部分,可能包含Java类和方法,用于处理图像并应用模糊效果。 2. **示例应用**:可能包含一个简单的Java应用,演示如何使用库来创建模糊视图背景,这对于开发者理解和学习...

    java-sdk-master.zip_leancound集成第三方插件_即时通讯

    Java SDK是许多软件开发中的重要组成部分,特别是在与服务器端交互时。在这个名为"java-sdk-master.zip"的压缩包中,包含的是Leancound的Java SDK,这是一个专为集成Leancound服务而设计的开发工具包。Leancound是...

    _Java-集合容器-2.List及其实现类.ppt

    在Java编程中,集合容器是数据管理的重要组成部分,它们提供了灵活且高效的方式来存储和操作对象。List接口是Java集合框架中的核心接口之一,它继承自Collection接口,并具有特定的特性:元素可以重复,保持元素的...

    ks-java-lib:包含 Java 的 KS 库

    使用 KS Java 库时,开发者需要按照库的文档说明将其添加到项目依赖中,然后通过导入相应的类和方法来使用库的功能。同时,为了确保代码的健壮性,开发者还应该参考提供的测试用例进行自我测试,并遵循库的更新维护...

    Free Spire.Doc for Java - 3.9 无水印

    在Java项目中,首先需要将`lib`目录下的`Spire.Doc.jar`库文件引入到类路径中。然后,可以通过以下基本步骤开始使用: 1. 创建`Document`对象,加载或新建Word文档。 2. 使用各种API添加或修改文档内容。 3. 调用`...

    java-pdf&word-jar.zip

    以上就是`java-pdf&word-jar.zip`压缩包中涉及到的Java库的关键功能和应用场景。开发者可以结合这些库,轻松地在Java程序中实现对PDF和Word文档的高效操作,满足各种业务需求。在实际开发中,根据项目的具体需求选择...

    java-leetcode题解之第21题合并两个有序链表.zip

    这个过程持续到一个链表遍历完,然后将另一个链表的剩余部分连接到新链表的末尾。 4. **链表的排序**:由于两个输入链表已经排序,所以这个问题实际上是一个在线排序问题,我们不需要在内存中创建一个完整的排序...

Global site tag (gtag.js) - Google Analytics