这一章节我们来讨论一下内部类链接到外部类的几个方面。
上一章节主要展示了内部类封装一些实现,使得代码隐藏,但是内部类还可以链接到外部类,无需特殊条件,即可访问外部类的任何成员(属性域和方法),即它拥有外部类所有访问权限。
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();
}
总结:这一章节主要讲述了内部类链接到外部类,以及迭代器的实现。
这一章节就到这里,谢谢。
-----------------------------------
目录
分享到:
相关推荐
开发者可以通过将这些类文件打包到一起,创建出可以在Java虚拟机(JVM)上运行的可执行程序或库。 标签 "jar" 和 "java" 明确了这个文件与Java编程语言和JAR文件格式的关系。Java开发者经常使用JAR文件来分发和部署...
用户可以轻松地导入现有的Java项目,或者从头开始创建新的项目,包括Maven或Gradle构建系统。 3. **构建工具**:Eclipse 集成了构建工具,如Ant和Maven,使得构建和管理项目依赖变得简单。对于现代Java开发,Maven...
- **Android Socket编程**:使用Java的Socket类建立与NTRIP服务器的连接,收发数据。 - **JSON或XML解析**:NTRIP数据可能以这两种格式传输,需要解析成Java对象。 - **Android权限管理**:可能需要获取网络访问权限...
2. **aip-java-sdk-4.2.0.jar**:这是核心的AIP Java SDK库文件,包含了所有用于与百度AI平台交互的类和方法。开发者需要引入这个jar文件到他们的Android项目中,才能使用SDK提供的功能。 3. **json-20160810.jar**...
开发人员可以通过将其添加到项目类路径中,快速开始处理文档任务。 Aspose.Words的功能丰富多样,包括但不限于以下几点: 1. **文档创建**:支持从头创建新的文档,或基于现有模板生成文档。 2. **文档读取和解析*...
【标题】: "手把手 - 微服务 Windows 开发环境从头搭建 2022-09-05 直播录像 - 软件安装包-2.zip" 这个压缩包文件包含了搭建微服务开发环境所需的基础软件,包括JDK(Java Development Kit)和MySQL数据库。...
在"Swing外观包.jar"这个文件中,可能包含了一些预设的LookAndFeel实现或者定制的LookAndFeel类,以便开发者可以直接导入并应用于他们的项目中,无需从头开始编写。这大大简化了创建独特界面的过程,使得开发者可以...
在Java编程中,多文件...通过这个"java-多文件上传dome"工具包,你可以快速实现上述功能,无需从头编写所有代码。不过,记得在实际项目中,除了功能实现,还要关注性能、安全性和可维护性,确保应用程序的稳定运行。
`Object`类是所有Java类的基类,也就是说所有的类都直接或间接地继承自`Object`。因此,`Object`类中定义的方法可以在所有类中使用。 - **Object类常用方法** - `public boolean equals(Object obj)`:比较两个...
2. **数据库操作**:JDBC(Java Database Connectivity)是Java标准的数据库连接库,允许程序与各种类型的数据库进行交互。除此之外,还有像Hibernate和MyBatis这样的对象关系映射(ORM)框架,它们简化了SQL查询,...
Java是一种广泛使用的面向对象的编程语言,其特点包括抽象、继承、封装和多态性。在Java笔试中,这些概念经常被考察。 1. **面向对象的特征**: - **抽象**:抽象是将复杂问题简化的过程,分为过程抽象(方法)和...
【标题】:“curso-java-pildorasInf:从头开始学习Java” 这门“从头开始学习Java”的课程,源自"PillsInformática"的教育资源,旨在为初学者提供全面的Java编程知识。Java是一种广泛使用的面向对象的编程语言,由...
1. **源代码**:这是实现模糊视图背景的核心部分,可能包含Java类和方法,用于处理图像并应用模糊效果。 2. **示例应用**:可能包含一个简单的Java应用,演示如何使用库来创建模糊视图背景,这对于开发者理解和学习...
Java SDK是许多软件开发中的重要组成部分,特别是在与服务器端交互时。在这个名为"java-sdk-master.zip"的压缩包中,包含的是Leancound的Java SDK,这是一个专为集成Leancound服务而设计的开发工具包。Leancound是...
在Java编程中,集合容器是数据管理的重要组成部分,它们提供了灵活且高效的方式来存储和操作对象。List接口是Java集合框架中的核心接口之一,它继承自Collection接口,并具有特定的特性:元素可以重复,保持元素的...
使用 KS Java 库时,开发者需要按照库的文档说明将其添加到项目依赖中,然后通过导入相应的类和方法来使用库的功能。同时,为了确保代码的健壮性,开发者还应该参考提供的测试用例进行自我测试,并遵循库的更新维护...
在Java项目中,首先需要将`lib`目录下的`Spire.Doc.jar`库文件引入到类路径中。然后,可以通过以下基本步骤开始使用: 1. 创建`Document`对象,加载或新建Word文档。 2. 使用各种API添加或修改文档内容。 3. 调用`...
以上就是`java-pdf&word-jar.zip`压缩包中涉及到的Java库的关键功能和应用场景。开发者可以结合这些库,轻松地在Java程序中实现对PDF和Word文档的高效操作,满足各种业务需求。在实际开发中,根据项目的具体需求选择...
这个过程持续到一个链表遍历完,然后将另一个链表的剩余部分连接到新链表的末尾。 4. **链表的排序**:由于两个输入链表已经排序,所以这个问题实际上是一个在线排序问题,我们不需要在内存中创建一个完整的排序...