【Java笔记】第11章:内部类

news2024/11/17 5:25:43

  • 前言
  • 1. 讲解
  • 结语

在这里插入图片描述
在这里插入图片描述

上期回顾:【Java笔记】第10章:接口
个人主页:C_GUIQU
归属专栏:【Java学习】

在这里插入图片描述

前言

各位小伙伴大家好!上期小编给大家讲解了Java中的接口,接下来讲讲Java中的内部类!

1. 讲解

Java中的内部类是定义在另一个类内部的类。内部类与其外部类有一些特殊的关联,它可以访问外部类的成员,包括私有成员。内部类主要分为四种类型:成员内部类、匿名内部类、局部内部类和静态内部类。下面详细讲解每种内部类:

  1. 成员内部类(Member Inner Class):
    • 成员内部类是最常见的内部类类型,它像外部类的一个成员一样,可以访问外部类的所有成员和方法。
    • 成员内部类不能包含任何static变量或方法。
    • 要在外部类外部创建成员内部类的实例,需要通过外部类的实例来创建。
public class OuterClass {
    private int x = 10;
    class InnerClass {
        void display() {
            System.out.println(x);
        }
    }
    public static void main(String[] args) {
        OuterClass outer = new OuterClass();
        OuterClass.InnerClass inner = outer.new InnerClass();
        inner.display();
    }
}
  1. 匿名内部类(Anonymous Inner Class):
    • 匿名内部类是没有名称的内部类,它通常用于扩展一个类或实现一个接口的一次性使用。
    • 匿名内部类通常用于事件处理、线程操作等场合。
    • 它不能有构造器,但可以继承一个类或实现一个接口。
public class OuterClass {
    public void display() {
        Thread thread = new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println("匿名内部类");
            }
        });
        thread.start();
    }
    public static void main(String[] args) {
        OuterClass outer = new OuterClass();
        outer.display();
    }
}
  1. 局部内部类(Local Inner Class):
    • 局部内部类是定义在一个块中的类,例如方法或作用域块。
    • 它只能在该块内部被访问。
    • 局部内部类可以访问外部类的final或effectively final变量。
public class OuterClass {
    private int x = 10;
    public void display() {
        final int y = 20;
        class LocalInnerClass {
            void display() {
                System.out.println(x + y);
            }
        }
        LocalInnerClass localInner = new LocalInnerClass();
        localInner.display();
    }
    public static void main(String[] args) {
        OuterClass outer = new OuterClass();
        outer.display();
    }
}
  1. 静态内部类(Static Nested Class):
    • 静态内部类是使用static关键字定义的内部类。
    • 它可以包含静态成员和方法。
    • 静态内部类与其他内部类的主要区别在于,静态内部类可以独立于外部类实例而被实例化。
    • 静态内部类不能访问非静态的外部类成员。
public class OuterClass {
    private static int x = 10;
    static class StaticNestedClass {
        void display() {
            System.out.println(x);
        }
    }
    public static void main(String[] args) {
        OuterClass.StaticNestedClass staticNested = new OuterClass.StaticNestedClass();
        staticNested.display();
    }
}

内部类在Java中是一个强大的特性,它允许你将相关的类组织在一起,并且可以提供更好的封装和代码结构。然而,过度使用内部类可能会导致代码难以理解和维护,因此应该根据实际情况合理使用。

结语

至此,Java的内部类讲解完毕。
感谢您的观看!互三必回!持续更新中~!

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1818041.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【每日刷题】Day63

【每日刷题】Day63 🥕个人主页:开敲🍉 🔥所属专栏:每日刷题🍍 🌼文章目录🌼 1. 414. 第三大的数 - 力扣(LeetCode) 2. 2265. 统计值等于子树平均值的节点数…

我国间二甲苯零售规模逐渐扩大 进口量有所下滑

我国间二甲苯零售规模逐渐扩大 进口量有所下滑 间二甲苯(MX)又称为1,3-二甲苯,是苯的两个氢基被两个甲基取代后形成的一种有机化合物。间二甲苯的化学方程式为C8H10,多表现为一种无色透明的液体,不溶于水,但…

人工智能的社会应用:深刻变革的新浪潮

人工智能的社会应用(语言文本方面) 人工智能在社会应用中的广泛运用体现在多个领域,特别是在语音和文本处理方面。以下是这些技术的一些扩展: 1. 文本翻译: 谷歌翻译:利用深度学习模型,支持100多…

ARM功耗管理框架之SCP

安全之安全(security)博客目录导读 目录 一、功耗管理框架中的SCP 二、SCP的示例 三、SCP固件 四、SCP启动流程 五、SCP的memory map 六、SCP与AP的通信 思考:功耗管理框架?SCP?PPU?LPI?之间的关系?如何配合? 一、功耗管理框架中的SCP 二、SCP的示例

【Python】使用OpenCV特征匹配检测图像中的【特定水印】

如果没有方向 往哪里走都是前方 做自己的光 不需要多亮 曾受过的伤 会长出翅膀 大雨冲刷过的天空会更加明亮 流过泪的眼睛也一样 做自己的光 悄悄的发亮 逆风的方向 更容易飞翔 世界怎样在于你凝视它的目光 那未曾谋面过的远方 或许就在身旁 &#x1f3b5…

Intel 8080接口与Motorola 6800接口定义与应用

本文介绍Intel 8080接口与Motorola 6800接口定义与应用。 Intel 8080接口与Motorola 6800接口是常用的并行总线接口,在MCU与外设直接的接口中经常用到,如MCU与LCD接口,MCU与FPGA之间的接口。本文介绍Intel 8080接口与Motorola 6800接口定义&…

Springboot的小型超市商品展销系统-计算机毕业设计源码01635

摘 要 科技进步的飞速发展引起人们日常生活的巨大变化,电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用。信息时代的到来已成为不可阻挡的时尚潮流,人类发展的历史正进入一个新时代。在现实运用中,应用软件的工作…

通用大模型VS垂直大模型,相辅相成!

1.通用大模型: 如OpenAI的GPT系列、Google的PaLM等,因其广泛的训练数据来源和强大的泛化能力,展现出在多种任务和场景中的应用潜力。它们能够处理从文本生成、代码编写到语言翻译等多种复杂任务,适应性强,减少了针对单…

视频格式转换avi格式怎么弄?分享视频转换方法

视频格式转换avi格式怎么弄?AVI作为一种广泛支持的视频格式,能够在多种设备和播放器上顺畅播放,确保我们的视频内容能够无障碍地分享给朋友或上传至各大平台。其次,AVI格式通常具有较好的兼容性,能够避免格式转换过程中…

模拟信号转RS-485/232,数据采集A/D转换模块 YL21

特点: ● 模拟信号采集,隔离转换 RS-485/232输出 ● 采用12位AD转换器,测量精度优于0.1% ● 通过RS-485/232接口可以程控校准模块精度 ● 信号输入 / 输出之间隔离耐压3000VDC ● 宽电源供电范围:8 ~ 32VDC ● 可靠性高&…

CPN tools学习——可执行的 PN

目录 1添加令牌 2.转换防护Guard 1添加令牌 左侧新建颜色集和变量的声明定义: 为库所分配颜色集:左键tab键 P1处:添加多重集合,表示添加了两个令牌,第一个令牌值为A,第二个为B。 P2处:表示…

VMware清理拖拽缓存

磁盘空间越用越小,如何快速解决磁盘空间的问题,甩掉烦恼 安装VM tools之后可以通过拖拽的方式把文件拉入虚拟机之中。但每一次拖拽,其实都是现在cache文件夹里面生成一个同样的文件,并使用cp拷贝的方式将其拷贝到拖拽放置的目录中…

云平台DNS故障导致网站访问卡顿异常排查过程,wireshark、strace等工具在实际问题排查过程中的应用方法

一、问题现象 项目上使用华为私有云,前段时间华为升级云平台后,云上用户反馈业务系统出现卡顿,之前几秒可以刷新出来的页面现在需要几十秒。提供了一个比较明显的url和curl调用方法。 10.213.x.xxx:8082/files/login curl -H "Content-…

泰迪智能科技携手广西科技大学理学院共建“上进双创工作室”

6月12日,广东泰迪智能科技股份有限公司携手广西科技大学理学院在泰迪智能科技产教融合实训中心举行“上进双创工作室”签约揭牌仪式,标志“泰迪科技广西科大上进双创工作室”的正式启动。 仪式由泰迪智能科技运营中心总监翁梦婷主持。广西科技大学理学院…

使用 Elasticsearch 设计大规模向量搜索

作者:Jim Ferenczi 第 1 部分:高保真密集向量搜索 简介 在设计向量搜索体验时,可用选项的数量之多可能会让人感到不知所措。最初,管理少量向量很简单,但随着应用程序的扩展,这很快就会成为瓶颈。 在本系列…

ATA-3040C功率放大器的正确使用方法

功率放大器是一种用于增强电信号功率的重要设备。正确使用功率放大器可以确保信号的稳定放大,并避免设备损坏。下面将介绍功率放大器的正确使用方法。 确定输入信号的功率范围:在使用功率放大器之前,需要确定输入信号的功率范围。过大的输入功…

白酒:茅台镇白酒的品牌故事与传奇色彩

茅台镇,这个位于中国贵州省遵义市仁怀市的小镇,因为出产的白酒品质卓着,被誉为“世界名酒之乡”。在这片神奇的土地上,云仓酒庄以其豪迈白酒,书写了一段段品牌故事与传奇色彩。 云仓酒庄豪迈,酿造于茅台镇的…

shell文本三剑客 awk 和 grep

awk 前言 AWK是一种优良的文本处理工具。它不仅是 Linux中也是任何环境中现有的功能最强大的数据处理引擎之一。 Linux中最常用的文本处理工具有grep,sed,awk。行内将之称为文本三剑客,就功能量和效率来看,awk是当之无愧的文本三…

取模软件测试版生成的有斜线,但测试字库的功能是好用无限制。只需要自己开发一个字库生成软件。IDA工具,如何搜中文

IDA工具,如何搜中文 在 IDA (Interactive Disassembler) 中搜索中文字符串,可以按照以下步骤操作: 方法一:使用“搜索文本”功能 打开 IDA 并加载目标文件:启动 IDA 并打开你需要分析的二进制文件。打开搜索文本对话…

厨房燃气安全新保障:红外点式可燃气体报警器的作用

在现代家庭生活中,厨房的安全问题日益受到人们的关注。其中,燃气泄漏和火灾是厨房安全的主要隐患。 据统计,90%的火灾源于燃气泄漏,而厨房又是燃气使用最为频繁的区域。因此,一款高效、可靠的可燃气体报警器对于保障家…