内部类知识
一、内部类概述1. 什么是内部类把一个类定义在另一个类的里面里面的类叫内部类外面的类叫外部类。 Java 内部类一共 4 种成员内部类局部内部类静态内部类静态成员内部类匿名内部类核心特点内部类可以直接访问外部类所有成员包括私有成员外部类访问内部类成员需要先创建内部类对象。二、成员内部类1. 定义位置写在外部类的成员位置和成员变量、成员方法同级不在方法里面。class Outer{ //外部类 // 成员变量 private String name 外部类私有属性; // 成员内部类 class Inner{ public void show(){ // ✅内部类可以直接访问外部类的私有成员 System.out.println(name); } } }2. 创建成员内部类对象语法外部类.内部类 对象名 new 外部类().new 内部类();完整演示代码class Outer{ private String name 外部类私有属性; //成员内部类 class Inner{ public void show(){ System.out.println(name); } } } public class Test{ public static void main(String[] args) { // 创建成员内部类对象 Outer.Inner inner new Outer().new Inner(); inner.show(); //输出外部类私有属性 } }3. 重点重名变量访问外部类.this当内部类成员变量、外部类成员变量重名时this.变量访问内部类自己的成员外部类名.this.变量访问外部类成员class Outer{ String num 外部类; class Inner{ String num 内部类; public void test(){ String num 局部变量; System.out.println(num); //局部变量 System.out.println(this.num); //内部类成员 System.out.println(Outer.this.num); //外部类成员 } } }4. 成员内部类注意事项不能定义static 静态成员static 属于类成员内部类依赖外部对象成员内部类属于外部类实例必须先有外部类对象才能创建内部类对象可以使用private修饰私有化之后外部无法直接创建内部类对象只能在外部类内部提供方法获取。class Outer{ private class Inner{ //私有成员内部类 public void show(){ System.out.println(私有内部类); } } //外部类提供方法返回内部类对象 public Inner getInner(){ return new Inner(); } }三、局部内部类1. 定义位置定义在外部类的方法里面属于方法局部。作用域只能在当前方法内使用方法外面不可见。class Outer{ public void method(){ //局部内部类写在方法内部 class Inner{ public void show(){ System.out.println(局部内部类方法); } } // 只能在当前方法内创建对象使用 Inner inner new Inner(); inner.show(); } } public class Test{ public static void main(String[] args) { Outer outer new Outer(); outer.method(); } }2. 核心特性作用域仅限于当前方法外部完全无法访问JDK8 之前访问方法的局部变量变量必须加final JDK8 及以后有效 final变量不重新赋值就可以直接访问原因局部变量在栈内存方法执行完会销毁局部内部类对象在堆生命周期更长为防止数据不一致要求变量不可修改。class Outer{ public void method(){ int num 10; //有效final没有二次赋值 class Inner{ public void show(){ System.out.println(num); //可以访问 } } Inner inner new Inner(); inner.show(); // num 20; 如果写这句上面代码直接报错 } }不能加访问修饰符public/private/protected和局部变量一样。四、静态内部类静态成员内部类1. 定义成员内部类前面加static就是静态内部类。static 属于外部类本身不依赖外部类对象。class Outer{ private static String name 外部类静态属性; //静态内部类 static class Inner{ public void show(){ //静态内部类只能直接访问外部类static成员 System.out.println(name); } } }2. 创建对象语法外部类.内部类 对象名 new 外部类.内部类();完整示例class Outer{ private static String staticStr 外部静态变量; private String instanceStr 外部实例变量; static class Inner{ public void show(){ System.out.println(staticStr); // System.out.println(instanceStr); 报错静态内部类不能直接访问外部非static成员 // 如果要访问外部实例成员必须手动创建外部类对象 Outer outer new Outer(); System.out.println(outer.instanceStr); } } } public class Test{ public static void main(String[] args) { //静态内部类创建不需要外部类对象 Outer.Inner inner new Outer.Inner(); inner.show(); } }3. 重点总结静态内部类只能直接访问外部类静态成员访问外部非静态成员需要手动 new 外部类对象创建静态内部类对象不需要外部类实例静态内部类里面可以定义静态成员。开发常用场景工具类、实体类的嵌套比如 HashMap 里面的 Node 就是静态内部类五、匿名内部类1. 定义没有名字的内部类用来简化代码一次性使用只创建一次对象。 前提必须继承一个类 / 实现一个接口。 语法格式new 接口/父类(){ //重写抽象方法 Override public void 方法名(){ } };2. 代码演示//定义接口 interface Animal{ void eat(); } public class Test{ public static void main(String[] args) { //匿名内部类相当于创建了一个没有名字的类实现Animal接口并直接new对象 Animal cat new Animal(){ Override public void eat() { System.out.println(小猫吃鱼); } }; cat.eat(); } }3. 本质匿名内部类 定义类 实现 / 继承 创建对象一步完成。这个类没有名字只能使用一次不能重复 new。4. 匿名内部类特点没有类名不能写构造方法适合接口只有少量抽象方法临时使用JDK8 之后很多场景可以用 Lambda 表达式替代可以访问外部变量同样遵守有效 final规则。5. 匿名内部类传参写法interface Run{ void run(); } class Test{ public static void test(Run r){ r.run(); } public static void main(String[] args) { //直接把匿名内部类传入方法 test(new Run(){ Override public void run() { System.out.println(奔跑); } }); } }六、四种内部类对比总表表格类型定义位置创建对象访问外部成员成员内部类外部类成员位置方法外new Outer().new Inner()可以访问所有成员包括私有不能定义 static局部内部类外部类方法内部方法内 new Inner ()访问方法局部变量要求有效 final仅方法内可用静态内部类外部类成员位置加 staticnew Outer.Inner()只能直接访问外部 static 成员匿名内部类方法中new 的时候定义直接 new无类名一次性使用实现接口 / 继承类七、高频易错点成员内部类不能写 static 成员静态内部类可以静态内部类不等于成员内部类不需要外部实例局部内部类不能加 public/private 修饰匿名内部类不是 LambdaLambda 只能用于函数式接口。

相关新闻

Vibe Coding 排错实战:用一套“问 AI“提问骨架,把页面空白、按钮失灵、构建失败和部署翻车逐个收窄

Vibe Coding 排错实战:用一套“问 AI“提问骨架,把页面空白、按钮失灵、构建失败和部署翻车逐个收窄

文档教程Vibe Coding示例工程 【免费下载链接】vibe-vibe The First Systematic Vibe Coding Open-Source Tutorial | From Zero to Full-Stack, Empowering Everyone to Build Products with AI | Live at: www.vibevibe.cn ;首个系统化 Vibe Coding 开源教程 | 零…

2026/10/12 3:58:23 阅读更多 →
【知识讲解】 Linux之动静态库的了解

【知识讲解】 Linux之动静态库的了解

目录 前言 Part1. 库的意义 Part2. 静态库制作、编译与发布 Part2.1. 静态库制作步骤 Part2.2. 使用静态库编译业务代码 Part2.3. 静态库的打包分发 Part2.4. Makefile 自动化构建静态库、一键打包发布 Part3. 动态库制作、编译、部署 Part3.1. 动态库制作 Part3.2. …

2026/10/12 3:58:23 阅读更多 →
新质生产力与数据零件库建设:技术复用与研发复用的知识底座

新质生产力与数据零件库建设:技术复用与研发复用的知识底座

新质生产力与数据零件库建设:技术复用与研发复用的知识底座新质生产力强调“以人工智能引领科研范式变革”。AI要引领科研范式变革,需要数据底座和知识底座。没有数据底座,AI无法训练模型;没有知识底座,AI无法推理判断…

2026/10/12 3:57:23 阅读更多 →

最新新闻

OpenClaw技能合集:从Clawdbot到Moltbot的Agent Skill精选与TaoToken接入实践

OpenClaw技能合集:从Clawdbot到Moltbot的Agent Skill精选与TaoToken接入实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 4:43:48 阅读更多 →
模型上下文协议(MCP)实战:用 TaoToken 统一 Key 打通 Cline MCP 工具链

模型上下文协议(MCP)实战:用 TaoToken 统一 Key 打通 Cline MCP 工具链

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 4:43:48 阅读更多 →
从前端到全栈:用Mastra打造带记忆的客服Agent

从前端到全栈:用Mastra打造带记忆的客服Agent

去年年底,我接到一个任务:给后台管理系统加一个智能客服入口。当时我还没从"纯前端"的舒适区里出来,第一反应是——这不就是接个大模型 API,把用户问题丢过去,再把返回文本显示出来吗?后来真正动…

2026/10/12 4:43:48 阅读更多 →
Playnite 游戏库管理指南:把多平台游戏集中到一个界面

Playnite 游戏库管理指南:把多平台游戏集中到一个界面

Playnite 游戏库管理指南:把多平台游戏集中到一个界面 【免费下载链接】Playnite Video game library manager with support for wide range of 3rd party libraries and game emulation support, providing one unified interface for your games. 项目地址: htt…

2026/10/12 4:43:48 阅读更多 →
CS2卡顿、掉帧、闪退、黑屏?一套系统级排查流程帮你定位根源

CS2卡顿、掉帧、闪退、黑屏?一套系统级排查流程帮你定位根源

先说个现象。CS2 每次大更新之后,社区里讨论得最热烈的往往不是战术配合,而是"为什么我又卡成 PPT 了"。我翻了一下后台的高频问题,卡顿、掉帧、闪退、黑屏卡死这四个词基本能覆盖九成以上的求助帖。但有意思的是,很多人…

2026/10/12 4:43:48 阅读更多 →
SpringBoot+Vue+MySQL学生宿舍管理系统全栈项目实战解析

SpringBoot+Vue+MySQL学生宿舍管理系统全栈项目实战解析

每个做过毕设或课设的人心里都清楚,选对一个项目方向意味着什么。不是越难越好,而是难度刚好卡在答辩能讲清楚、自己也能hold住的区间。这几年Java方向的项目里,“SpringBootVueMySQL”已经成了学生宿舍信息管理系统这类业务系统的标准配置。…

2026/10/12 4:42:48 阅读更多 →

日新闻

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

在数码相机、高清显示屏与现代矢量图形技术高度发达的今天,画面可以做到绝对的锐利、平滑与无瑕。然而,当一张秋日手账插画或拍立得照片过于“平整无瑕”时,往往会散发出一种冰冷生硬的“数码塑料感(Digital Plasticity&#xff0…

2026/10/12 0:00:59 阅读更多 →
活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

在现代网页与移动端设计中,横排(Horizontal Layout)早已经成为了绝对的主流。然而,当我们翻开泛黄的线装古籍、宋版木刻诗集,或是欣赏一张茶道雅集的手写便签时,那种**自上而下纵向书写、自右向左逐列铺展&…

2026/10/12 0:00:59 阅读更多 →
周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

每到周日的晚上八点到十点,很多人心里都会悄悄亮起一盏警示灯。 在心理学上,这种现象有一个专门的称谓——“周日夜晚焦虑症(Sunday Scaries)”。明天又是周一,闹钟又要重新在七点响彻卧房;脑海里仿佛有一个…

2026/10/12 0:00:59 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/12 0:16:30 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/12 0:16:43 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 10:45:37 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:53 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:54 阅读更多 →