这一章节我们来讨论一下内部类链接到外部类的几个方面。
上一章节主要展示了内部类封装一些实现,使得代码隐藏,但是内部类还可以链接到外部类,无需特殊条件,即可访问外部类的任何成员(属性域和方法),即它拥有外部类所有访问权限。
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();
}
总结:这一章节主要讲述了内部类链接到外部类,以及迭代器的实现。
这一章节就到这里,谢谢。
-----------------------------------
目录
分享到:
相关推荐
从头写React-like框架的工程搭建实现 最近在网上看到了 Build your own React 这篇文章,作者从零开始实现了一个简易类 React 框架,虽然没有过多的优化,但 React 中的核心思想 Concurrent Mode,Fiber ...
从头开始学习Java课程-资料来源PillsInformática。
视频 https://www.bilibili.com/video/BV1914y1s7hi
视频 https://www.bilibili.com/video/BV1914y1s7hi
你会学到什么 通过 Java 片段的构建块,您将能够立即了解 Java 编程的要点。 你需要什么 勇敢地浏览存储库! 或替代开源 JDK 1.8 版本 截至今天,该存储库已通过测试 Oracle JDK 1.8 OpenJDK 1.8 BellSoft Liberica ...
军工行业2021年度投资策略:而今迈步从头越-20201115-招商证券.pdf
赖世雄英语从头学 下载-附件资源
Java-3D游戏引擎与基本游戏Java中使用LWJGL,OpenGL,OpenAL等的3D游戏引擎。 从头开始
java实现验证码功能源码 Java Periphery 是一个高性能库,用于用户空间 Linux 中的 GPIO、LED、PWM、SPI、I2C、MMIO 和串行外设 I/O 接口访问。 我没有尝试从头开始构建它并生成 JNI 包装器。 这节省了大量手动编码...
本资料是UCSF DOCK的使用案例分享的输入资料,将使用DOCK 6.11自带的片段库,使用DOCK/RDKit的 DOCK_D3N功能从头设计分子。便于使用者直接从这部分设计工作开始,不需花时间来准备输入文件。
例如,当我们想从头开始创建RPC框架时,我们需要了解Java动态代理和序列化。 这是清单: 技术 模块/链接 设想 地位 评论 动态代理 动态代理 RPC 智商 完毕 字节程序Java代理, 乐器, 字节好友 字节码程序java-...
乙二醇2020年度策略报告:“熊”关漫道真如铁,而今迈步从头越-20191230-光大期货-36页.rar
开发人员零java-Mentorama 在此存储库中,将从头开始插入Java Developer模块的Mentorama课程期间开发的所有练习。
与服务器位于同一个WiFi网络中的所有其他用户都可以通过运行Client.JAR文件连接到聊天,并使用我制作的高级功能进行通信。 我添加了一个类图和一个详细的Java文档。 随意尝试挑战应用程序,检查错误并复制代码。 ...
3D游戏从头编-网上收集,很基础. 第一回:开发环境 第二回:3D基本概念 第三回:第一个D3D程序 第四回:渲染顶点 第五回:渲染索引顶点 第六回:摄象机 第七回:灯光 第八回:纹理 第九回:3D模型(.x)
java源码字符串缓冲区 这是 Java String 、 StringBuilder和StringBuffer方法/API 的完整指南。 本指南的源代码示例在我们的本地开发环境中进行了良好的测试,您可以将这些示例用作无错误。 您可以在 上了解更多信息...
Java机器人 这是一个从头开始编写JavaScript机器人
如果您了解一点C或JavaScript,本指南就是从头开始学习Java。 这是一个正在进行的工作,应该在下一个Java LTS(Java 17)发布时准备就绪。 所有代码都在启用预览功能的Java 14上运行。 注意:如果您只希望查看...
Minijava(到 LLVM IR)编译器。 描述 目前,编译器处于早期开发阶段。 在撰写本文时,词法分析、解析和类型检查以及代码生成的大部分工作已经完成。 接下来是简短的使用指南,然后是源代码指南。 用法 假设您已安装...
Java系列13-Spring Boot 实际上,我们将从头开始逐步开发项目。 我们将详细检查Spring Boot开发环境和体系结构。 借助Spring Boot,我们将探索公司Java项目的基础架构。 您可以通过Spring Framework为自己带来美好的...