Java编程思想第十章"内部类"的10.1和10.2小节的练习题

2020-8-24练习题 一、选择填空题 1.Outer类中定义了一个成员内部类Inner,需要在main()方法中创建Inner类实例对象,以下四种方式哪一种是正确的? A、Inner in = new Inner() B、Inner in = new Outer.Inner(); C、Outer.Inner in = new Outer.Inner(); D、Outer.Inner in = new Outer().new Inner(); 2. 下列关于浮点型数据的定义,哪一个不能通过编译( ) A、double a=12. 阅读详情

10.1小节只是讲如何创建一个类的内部类,因而只记录一下练习题。

练习题1:编写一个名为Outer的类,它包含一个名为Inner的类。在Outer中添加一个方法,它返回一个Inner类型的对象。在main()中,创建并初始化一个指向某个Inner对象的引用。

代码实现如下:

public class Outer {

    Outer() {
        System.out.println("I am Outer.");
    }

    class Inner {
        Inner() {
            System.out.println("I am Inner.");
        }
    }

    public Inner getInner() {
        return new Inner();
    }

    public static void main(String[] args) {
        Outer outer = new Outer();
        Outer.Inner inner = outer.getInner();
    }
}

10.2小节是讲内部类拥有其外围类的所有成员(字段和方法)的访问权。有意思的是,书中使用了"迭代器"模式来进行演示,如下代码:

迭代器接口:

interface Selector {

    boolean end();
    Object current();
    void next();
}

容器类和容器类内部实现的迭代器:

public class Sequence {

    private Object[] items;
    private int next = 0;

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

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

    private class SequenceSelector implements Selector {

        private int i = 0;

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

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

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

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

练习题2:创建一个类,它持有一个String,并且有一个显示这个String的toString()方法。将你的新类的若干个对象添加到一个Sequence对象中,然后显示他们。

代码如下:

自定义新类Employee:

public class Employee {

    private int id;
    private String code;

    public Employee(int id, String code) {
        this.id = id;
        this.code = code;
    }

    @Override
    public String toString() {
        return "Employee [id=" + id + ", code=" + code + "]";
    }
}

在Sequence中创建该类对象,并输出:

public static void main(String[] args) {
    Sequence sequence = new Sequence(10);
    for (int i = 0; i < 10; i++) {
        Employee emp = new Employee(i, "compony" + i);
        sequence.add(emp);

    }

    Selector selector = sequence.getSelector();
    while (!selector.end()) {
        System.out.println(selector.current());
        selector.next();
    }
}

练习题3:修改练习题1,使得Outer类包含一个private String域(由构造器初始化),而Inner包含一个显示这个域的toString()方法。创建一个Inner类型的对象并显示它。

public class Outer2 {

    private String val;

    Outer2(String val) {
        this.val = val;
    }

    class Inner {
        Inner() {
        }

        @Override
        public String toString() {
            return "Inner [toString() Outer.val=" + val + "]";
        }
    }

    public Inner getInner() {
        return new Inner();
    }

    public static void main(String[] args) {
        Outer2 outer = new Outer2("测试");
        Outer2.Inner inner = outer.getInner();
        System.out.println(inner);
    }
}

JAVA 系列——>内部类 将一个类A定义在另一个类B里面,里面的那个类A就称为内部类,B则称为外部类。 成员内部类 :定义在类中方法外的类。 定义格式: 在描述事物时,若一个事物内部还包含其他事物,就可以使用内部类这种结构。比如,汽车类 Car 中包含发动机 类 Engine ,这时, Engine 就可以使用内部类来描述,定义在成员位置。 访问特点 内部类可以直接访问外部类的成员,包括私有成员。 外部类要访问内部类的... 阅读详情

相关推荐

Cursor概述及环境配置

Cursor 是一款基于 AI 的代码编辑器,支持 VS Code 配置迁移和 Java 开发环境配置。主要功能分为 Cursor Settings(AI 相关设置)和 Editor Settings(基础编辑器设置)。用户可通过一键导入或手动方式迁移 VS Code 配置,配置包括主题、扩展和快捷键等。对于 Java 开发,需配置 JDK 和 Maven 路径,并安装 Java 扩展插件以获得完整开发体验,如代码补全、调试和 Maven 项目管理。此外,Cursor 支持汉化配置,用户可安装中文语言包切换

Knight 3551

抽象类和嵌套类

目录 抽象类 嵌套类 抽象类和嵌套类概念是面向对象设计中常用的概念,抽象类是用来表示对问题领域进行分析,设计中得出的抽象概念。是对一系列看上去不同但是本质上相同的概念的抽象,嵌套类的目的在于隐藏类名,减少全局的标识符,从而限制用户建立对象这样可以提高类的抽象力。 抽象类 当基类并不与具体事物相联系,而只表达一种抽象概念时,可以将此类基类定义为抽象类,用于为它的派生提供一个公共的界面。 抽象类于类的区别,抽象类是类,可以包含具体的功能实现代码,...

qq_64281750的博客 685

Cartographer参数调优指南:如何用Lua配置解决建图漂移问题

本文深入解析Cartographer SLAM系统的Lua参数调优方法,针对建图漂移问题提供完整解决方案。从运动滤波、扫描匹配到多传感器融合,详细讲解关键参数配置技巧,并给出仓库物流和服务机器人等典型场景的优化方案,帮助开发者实现精准建图。

vulkan6gpu的博客 116

创建内部类的实例方法

Outer类中定义了一个成员内部类Inner,需要在main()方法中创建Inner类实例对象,方法:Outer.Inner in  = new Outer().new Inner(); 内部类可以引用全局变量;

杨岳龙 2582

Flutter蓝牙开发实战:flutter_blue_plus核心功能与实现原理剖析

本文深入剖析了Flutter蓝牙开发插件flutter_blue_plus的核心功能与实现原理。文章从源码解析入手,详细讲解了蓝牙状态管理、设备扫描、GATT连接、服务发现以及数据读写等关键流程的实现机制,并分享了实战中的性能调优与常见问题解决方案,帮助开发者高效构建跨平台蓝牙应用。

weixin_29014237的博客 443

LangChain Agent Skills 实战指南:12个案例玩转智能体技能封装与编排

大语言模型应用开发中,智能体(Agent)的能力扩展正从零散的函数调用走向标准化封装。Agent Skills 将某项具体能力组织为带说明、代码与依赖的技能目录,让模型能自动发现和调度,其核心价值在于解决工具数量膨胀后的维护混乱与调用失控问题。与 Tool 的单一执行、MCP 的协议连接不同,Skill 更强调能力的语义描述与组合复用,配合 LangGraph 的状态编排和 LangSmith 的可观测性,可构建生产级智能体系统。在实际场景中,Agent Skills 可覆盖 RAG 知识库问答、多轮记忆保

weixin_34335458的博客 407

第1、2章习题

(3)Student类中定义两个构造方法,其中一个是无参的构造方法,另一个是接收两个参数的构造方法,分别用于为姓名和成绩属性赋值。7、 被static关键字修饰的方法被称为_静态变量_____,它只能用_实例方法_____的形式被调用。A、 类定义时 B、 创建对象时 C、 调用对象方法时 D、 使用对象的变量时。8、 在C#中,可以将类定义在另一个类的内部,这样的类称作_数据结构_____。3、 定义在类中的变量称为_属性_____,定义在方法中的变量称为___类。

a65593885的博客 1531

手把手教你用ArduPilot搭建低成本无人车(附APM飞控+有刷电调配置清单)

本文提供了一份基于ArduPilot开源平台搭建低成本智能无人车的详细实战指南。核心内容包括APM架构飞控的选型、双向有刷电调的兼容性配置与校准、系统连接逻辑,以及通过Mission Planner地面站进行参数调校和自主导航功能设置的完整流程,帮助爱好者快速实现从手动控制到自主行驶的跨越。

java5的博客 850

Java编程思想读书笔记——第十章:内部类

第十章 内部类 将一个类的定义放在另一个类的内部,这就是内部类 内部类和组合是完全不同的概念,内部类了解外部类 10.1 创建内部类 创建就好,好像没啥可说的,直接来上练习: 练习1:(1)编写一个名为Outer的类,它包含一个名为Inner的类。在Outer中添加一个方法,它返回一个Inner类型的对象。在main()中,创建并初始化一个指向某个对象的引用。 public c...

pengbo6665631的博客 1184

为什么你的SSE连接总断?深入对比EventSource与fetch-event-source的5大差异点

本文深入对比了原生EventSource与@microsoft/fetch-event-source库在SSE连接稳定性上的五大关键差异。重点剖析了后者在请求能力、连接控制、错误处理、数据解析及性能优化方面的优势,特别是其支持POST请求、自定义Header、精细化的重连策略与生命周期管理,为解决生产环境中SSE连接频繁断开的问题提供了专业方案。

weixin_28077113的博客 494

基于YOLOv26的卫星遥感环境监测系统

本文介绍了一个基于YOLOv26的卫星遥感环境监测系统。该系统采用分层架构设计,包含数据采集、预处理、目标检测、图像分析、变化检测等核心模块。技术栈包括YOLOv26、PyTorch、OpenCV等深度学习框架和图像处理工具,以及GDAL、rasterio等地理信息处理库。系统支持获取多种卫星数据源(如Sentinel、Landsat、MODIS)的遥感图像,并进行时间序列分析。通过代码示例展示了数据采集模块的实现,包括卫星图像获取和模拟生成功能。该系统可应用于环境要素检测、变化监测等场景,为环境监测提供智

一键难忘的博客 935

Java编程思想第十章"内部类"的10.3至10.6小节的练习题

10.3 使用.this与.new 在内部类中如果需要生成对外部类对象的引用,可以使用外部类的名字后面紧跟.this。 练习题4:在Sequence.SequenceSelector类中增加一个方法,它可以生成对外部类Sequence的引用。 代码如下: public Sequence getSequence() { return Sequence.this; } ...

hi__study的博客 730

[Dify实战] 品牌舆情速览:多渠道抓取、聚类情绪、生成日报-带绑定资源

摘要: 品牌舆情监测面临多渠道信息分散、手工处理效率低的痛点。Dify舆情速览助手通过自动化流程(数据抓取→情绪聚类→日报生成)帮助快速识别热点与风险。方案核心包括: 结构化处理:按情绪(正/中/负)聚类,分级标注风险事件; 日报输出:含热点摘要、趋势分析及处置建议(动作+团队+时间窗口); 质量控制:数据去噪、黑名单过滤,结合人工复核确保合规性。 落地需明确数据源分级(如权威媒体优先)、设置情绪阈值,并建立"发现-响应-复盘"闭环机制,提升舆情应对效率。 (字数:150)

技术小甜甜:传播可落地技术,帮助个人和企业降低解决真实场景问题的成本 297

Java编程思想第十章"内部类"的10.7至10.8小节的笔记和练习题

最近,我的工作很忙,而且10.8小节内容很多、很复杂,即使断断续续的抽时间看了三遍,依然感觉写不好这个小节的笔记。因此,此文中包含10.8小节的部分就当作摘抄,以备后续经常翻看。 10.7 嵌套类 将内部类声明为static,它通常被称为嵌套类。普通的内部类对象隐式地保存了一个指向创建它的外围类对象的引用,而嵌套类则不是这样: ①、要创建嵌套类的对象,不需要外围类的对象。...

hi__study的博客 566

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Java技术基础——Java编程思想学习小节(一)

Java编程思想学习小节(一) 前言:由于最近在找工作,将《Java编程思想》这一经典书籍翻阅一番,回顾其中关键和精彩之处总结出来做个记录,供日后参考。如有理解错误,请不吝赐教。(从该书第5章开始) 第五章 初始化与清理 1. 函数重载 甚至参数的顺序不同,也足以区分两个方法。不过,一般情况下别这么做,因为这会使代码难以维护。对于基本类型的重载,常数整数值会被当做int型处理;如果

技术玄关 2267

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Java 内部类和匿名内部类小结

一、什么是内部类 在一个类中定义另外一个类 举例: 在类A中,定义一个类B,就可以将类B作为A类的内部类. 二、分类 1)成员内部类: 在外部类的成员位置,定义一个类。 2)局部内部类: 在外部类的局部位置,定义一个类。 三、成员内部类访问特点 访问成员内部类中的成员方法: 需求:在测试类中如何访问成员内部类中的show方法(非静态) // 外部类 class Outer{ private int num = 10 ; public int num2 = 20 ; //成员内部类 public

Acybee的博客 451

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Java技术基础——Java编程思想学习小节(二)

Java编程思想学习小节(二) 前言:由于最近在找工作,将《Java编程思想》这一经典书籍翻阅一番,回顾其中关键和精彩之处总结出来做个记录,并查阅相关资料进行扩展,供日后参考。如有理解错误,请不吝赐教。(从该书第5章开始) 第六章 访问权限控制、第七章 复用类 1. 编译单元 一个Java源代码文件称为一个编译单元,每个编译单元只允许有一个public类,否则编译报错。编译单元

技术玄关 1462

JAVA内部类

内部类 内部类的分类 类别 定义 实例 成员内部类 在一个类中定义另一个类 成员内部类 局部内部类 在方法中定义另一个类 局部内部类 匿名内部类 省略掉该类的定义,直接重写抽象方法 匿名内部类 成员内部类 如果一个事物的内部包含另一个事物,那么这就是一个类内部包含另一个类。 例如:身体和心脏的关系。又如:汽车和发动机的关系。 分类: 成员内部类 局部内部类(包含匿名内...

huotong 371

Java中静态变量成员变量、静态内部类成员内部类小节

java内部类

三横同学的博客 809

说说Java中的内部类

/@OverrideSystem.out.println(“我是定时器”);flag=false;System.out.println(“flag改成了false”);show();System.out.println(“我是show”);4.内部类与外部类的关系1.对于非静态内部类,内部类的创建依赖外部类的实例对象。在没有外部类的实例之前是无法创建内部类的。

2301_82242670的博客 639

Java中的几种内部类

在看Java核心技术卷I 6.4小节内部类时有些混乱,故整理些笔记方便查看。 什么是内部类? 将一个类的定义放在另一个类的定义内部,这就是内部类。 为什么要使用内部类? 1、内部类方法可以访问该类定义所在的作用域中的数据,包括私有的数据,所以与常规类比较起来功能更加强大。 2、内部类可以对同一个包中的其他类隐藏起来。 3、当想要定义一个回调函数且不想编写大量代码时,使用匿名(anonymous...

LittleSheep肖恩 450

java内部类(代码演示)

1:什么是内部类 将一个类A定义在另一个类B里面,里面的那个类A就称为内部类,B则称为外部类。 例如:身体和心脏的关系。又如:汽车和发动机的关系。 2:分类 成员内部类:定义在类中,方法外的类。 局部内部类:(包含匿名内部类) 3:成员内部类 3.1 访问特点: 内部类可以直接访问外部类的成员,包括私有成员。 外部类要访问内部类的成员,必须要建立内部类的对象。 如何使用成员内部类?有两种方式: 间接方式:在外部类的方法当中,使用内部类;然后main只是调用外部类的方法。 直接方式,公式: 类名称

rainMan的博客 533

《Java编程思想》第四版读书笔记 第十章 内部类

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33737774的博客 187

java 静态内部类的使用方法_Java中如何应用静态的内部类

在上一小节我们讨论了内部类,即在一个类中包含有另外一个或者多个类(见本书12.3.3小节)。与内部类相似,静态内部类指在一个类的内部包含有另外一个或者多个静态类。例如:public class OuterClass {...static class StaticInnerClass1 { //内部静态类//只可以访问OuterClass的静态成员...} //StaticInnerClass结束....

weixin_42514889的博客 983

Java学习之旅第二季-19:内部类

本小节介绍了Java中的4种内部类形式:成员内部类、静态内部类、局部内部类和匿名内部类。成员内部类声明在类中,可访问外部类所有成员,创建需要外部类实例。静态内部类使用static修饰,只能访问外部类的静态成员。局部内部类定义在方法或代码块中,作用域有限,访问局部变量需为final。匿名内部类用于一次性实现接口或继承类,无需显式声明类名。每种内部类都有特定使用场景和访问规则,合理使用能提升代码封装性和组织性。

摸鱼的老谭 1196

【Java】内部类

内部类 /* 如果一个事物的内部包含另一个事物,那么这就是一个类内部包含另一个类。 例如:身体和心脏的关系。又如:汽车和发动机的关系。 分类: 1. 成员内部类 2. 局部内部类(包含匿名内部类) 成员内部类的定义格式: 修饰符 class 外部类名称 { 修饰符 class 内部类名称 { // ... } // ... } 注意:内用外,随意访问;...

欢迎关注【微信公众号】测试开发Guide,从功能测试进阶测试开发 150
上一篇: Java编程思想第九章"接口与工厂"的部分练习题
下一篇: Java编程思想第十章"内部类"的10.3至10.6小节的练习题
hi__study
博客等级 码龄10年 14粉丝 40原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值