JAVA-SE-内部类
目录一实例内部类二静态内部类三局部内部类四匿名内部类一实例内部类实例内部类就是未被 static 修饰的类例如class Out{ public int a; private int b; private static int c; //实例内部类 class In{ public int d; private int e; public void print(){ System.out.println(内部类); } } public void show(){ System.out.println(外部类); } }1. 如何去实例化一个实例内部类记住一句话先有外部类对象再有内部类对象。因为实例内部类是在外部类中定义的所以实例内部类是外部类的一个成员因此在实例化一个实例内部类之前要先实例化一个外部类而实例化对象的类型是 外部类类名 . 内部类类名 例如public class Test { public static void main(String[] args) { //第一种 Out out new Out(); Out.In in out.new In(); //第二种 Out.In in1 new Out().new In(); } }2. 为什么实例内部类中不能定义一个由 static 修饰的成员除非是 static final 因为静态成员是类本身的属性是在类加载的时候创建的而普通成员因依赖于对象是在实例化对象的时候创建。因为static final 修饰的是一个常量它不在类加载时创建而是在编译时完成所以可以。3. 在实例内部类方法中访问同名的成员时访问谁的如果要访问外部类同名的成员如何访问遵守就近原则优先访问实例内部类的成员如果要访问外部类同名的成员用 外部类类名.this.来访问因为实例内部类的非静态方法中包含了一个指向外部类对象的引用。如下class Out{ public int a 5; private int b; private static int c; class In{ public int a 10; public int d; private int e; static final int f 10; public void print(){ System.out.println(a);//就近原则优先访问实例内部类的 System.out.println(Out.this.a);//要访问外部类同名的成员用 外部类类名.this.来访问 System.out.println(内部类); } } public void show(){ System.out.println(外部类); } }4. 我们如何在外部类方法中访问内部类的成员先创建一个实例内部类对象再通过对象去访问例如class Out{ public int a 5; class In{ public int a 10; public int d 20; public void print(){ System.out.println(内部类); } } public void show(){ In in new In();//只有在外部类中才可以这样实例化 System.out.println(in.d); System.out.println(外部类); } }总结一下1. 外部类中的任何成员都可以在实例内部类方法中直接访问2. 实例内部类可以当成外部类的成员所以实例内部类也受public,private等访问限定符的限制3. 创建实力内部类对象必须先创建外部类对象4. 实例内部类不能定义静态成员除了static final5. 在实例内部类方法中访问同名的成员时优先访问自己的如果要访问外部类同名的成员必须使用 外部类类名.this.同名成员 来访问6. 外部类中不能直接访问内部类中的成员若要访问必须先创建实例内部类的对象二静态内部类静态内部类就是被static修饰的类例如class Out{ public int date1 1; private static int date2; public static void print(){ System.out.println(外部类); } public void print1(){ System.out.println(1232132); } //静态内部类 static class In{ public int date3 3; private static int date4 4; public void test(){ System.out.println(内部类); } } }1. 如何实例化一个静态内部类与实例内部类不同因为静态内部类是由static修饰的说明静态内部类是外部类本身的属性因此创建静态内部类时要 new 外部类类名.静态内部类类名(); 如下public class Test { public static void main(String[] args) { /*Out.In in1 new Out().new In();错误写法*/ Out.In in new Out.In();//创建静态内部类 } }2. 静态内部类可以定义由static 修饰的成员(即静态成员)3. 为什么静态内部类的方法不可以直接访问外部类中的非静态成员因为静态内部类是由static修饰是在类加载时创建的而非静态成员依赖于对象是在实例化对象的时候创建也就是说我们在静态内部类中访问的外部类非静态成员时它们还没有被创建也就无法访问。那么我们如何间接的访问呢很简单在方法中实例化一个外部类对象通过对象的引用去访问。class Out{ public int date1 1; private static int date2; public static void print(){ System.out.println(外部类); } public void print1(){ System.out.println(1232132); } static class In{ public int date3 3; private static int date4 4; public void test(){ //实例化外部类对象通过对象访问非静态 Out out new Out(); System.out.println(out.date1); out.print1(); //可以直接访问静态的 print(); date2 9; System.out.println(内部类); } } }与实例内部类的不同点1. 静态内部类对象的创建是直接 new 外部类类名.内部类类名() 不需要先实例化一个外部类对象2. 静态内部类中的方法不能直接访问外部类中的静态成员若硬要访问就必须先实例化一个外部类对象3. 静态内部类可以定义静态成员三局部内部类局部内部类定义在外部类方法中的类 - 几乎不使用了解一下class Out{ public void print(){ class In{ public int date 10; } In in new In(); System.out.println(in.date); } }注意1. 局部内部类只能在所定义的方法体内部使用2. 不能被public、static等修饰符修饰四匿名内部类匿名内部类顾名思义就是没有名字的类使用起来与上面的都不同需要与接口一起使用代码如下interface A{ void B(); } public class Test { public static void main(String[] args) { //可以这样理解有一个类 实现了A接口 并且重写了 B方法 //第一种使用方法 new A(){ Override public void B() { System.out.println(hhhhhh); } }.B(); //第二种使用方法 A a new A() { Override public void B() { System.out.println(111111); } }; a.B(); } }这里编译之后这个匿名内部类实际上变成了 A$1 类

相关新闻

如何3步解锁微信聊天记录的隐藏价值:WeChatMsg实用指南

如何3步解锁微信聊天记录的隐藏价值:WeChatMsg实用指南

如何3步解锁微信聊天记录的隐藏价值:WeChatMsg实用指南 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/WeCh…

2026/8/13 16:51:57 阅读更多 →
flutter_chat_box部署指南:轻松将ChatGPT应用打包到移动与桌面端

flutter_chat_box部署指南:轻松将ChatGPT应用打包到移动与桌面端

flutter_chat_box部署指南:轻松将ChatGPT应用打包到移动与桌面端 【免费下载链接】flutter_chat_box Flutter开发的和ChatGPT聊天的App,全平台支持 项目地址: https://gitcode.com/gh_mirrors/fl/flutter_chat_box flutter_chat_box是一款基于Flu…

2026/8/13 16:51:57 阅读更多 →
企业数字化转型的必经之路:深度解析河南浪博网站建设如何助力品牌腾飞与业绩增长

企业数字化转型的必经之路:深度解析河南浪博网站建设如何助力品牌腾飞与业绩增长

在这个信息爆炸、流量碎片化的时代,每一个老板、每一位创业者,甚至每一个还在为下一笔订单发愁的个体户,都在问同一个问题:我的生意到底该怎么干?以前我们觉得,开个店、摆个摊、或者搞个电话销售,只要脸皮厚、嘴皮子溜,就能把货卖出去。那时候,酒香不怕巷子深,哪怕巷…

2026/8/13 16:51:57 阅读更多 →

最新新闻

深入解析JVM方法区:从永久代到元空间的内存管理与调优

深入解析JVM方法区:从永久代到元空间的内存管理与调优

1. 方法区:JVM内存模型中的“中央图书馆”如果你写过Java程序,对堆(Heap)和栈(Stack)这两个概念一定不陌生,它们是程序运行时数据存储的“前台”和“工作台”。但JVM里还有一个至关重要的“后台…

2026/8/14 5:01:32 阅读更多 →
LabVIEW系统部署:NI自启动服务功能详解与优化配置指南

LabVIEW系统部署:NI自启动服务功能详解与优化配置指南

1. 项目概述:为什么需要一份NI自启动服务的中英对照表?在LabVIEW开发,特别是涉及系统部署、远程监控或自动化测试的项目中,我们常常需要将VI程序打包成安装程序,并配置为Windows服务,以实现开机自启动、后台…

2026/8/14 5:01:32 阅读更多 →
AI时代程序员价值重构:从代码生产者到系统设计者

AI时代程序员价值重构:从代码生产者到系统设计者

1. 面试官的灵魂拷问:当AI成为“超级实习生”最近在技术圈里,这个话题的热度一直没降下来过。面试官冷不丁抛出一句:“AI写代码比你快100倍,你的价值在哪?” 这问题听起来有点挑衅,甚至带着点“劝退”的味道…

2026/8/14 5:01:32 阅读更多 →
PyInstaller打包DLL加载失败:从blspy案例到通用解决方案

PyInstaller打包DLL加载失败:从blspy案例到通用解决方案

1. 从一次深夜的打包报错说起那天晚上,我正为一个用Python写的内部工具做最终打包。这个工具用到了blspy这个库,它是一个用于BLS签名的高性能密码学库,在很多区块链相关的项目里很常见。开发环境里一切正常,脚本跑得飞快。但当我想…

2026/8/14 5:01:32 阅读更多 →
Muse Spark 1.2:从代码补全到AI编程协作者的实战指南

Muse Spark 1.2:从代码补全到AI编程协作者的实战指南

如果你是一名开发者,最近一定被各种AI编程助手刷屏了。从Copilot到Cursor,再到国内层出不穷的“智能编码”工具,似乎每个都在宣称能“十倍提效”。但真正用起来,要么是代码补全的“高级版”,要么就是上下文理解有限&am…

2026/8/14 5:01:32 阅读更多 →
企业数字化转型指南:几十到几百人规模如何适配钉钉,找到最适合的办公系统

企业数字化转型指南:几十到几百人规模如何适配钉钉,找到最适合的办公系统

引言:为什么企业需要合适的办公系统? 在当今数字化时代,无论是几十人的初创团队还是几百人的成长型企业,都面临着同样的挑战:如何高效协同、规范管理、提升生产力。一个合适的办公系统不仅能解决日常沟通问题&#xff…

2026/8/14 5:00:32 阅读更多 →

日新闻

临沂网站建设铭镇:深耕本土数字生态,以匠心铸就企业品牌核心竞争力

临沂网站建设铭镇:深耕本土数字生态,以匠心铸就企业品牌核心竞争力

在这个流量为王、视觉至上的互联网时代,对于临沂乃至整个山东乃至全国的传统中小企业来说,拥有一张精美的“数字名片”早已不再是可选项,而是生存的必答题。每当夜幕降临,沂河两岸灯火辉煌,物流之都的喧嚣逐渐沉淀为对未来的思考。我们常常听到老板们在茶余饭后探讨:为什…

2026/8/14 0:00:26 阅读更多 →
Flutter与OpenHarmony实现剧本杀组队表单开发实战

Flutter与OpenHarmony实现剧本杀组队表单开发实战

1. 项目概述在移动应用开发领域,跨平台框架Flutter因其高效的开发体验和出色的性能表现,已经成为众多开发者的首选。而OpenHarmony作为新兴的操作系统平台,其开放性和灵活性为开发者提供了全新的可能性。本文将聚焦于一个实际应用场景——剧本…

2026/8/14 0:00:26 阅读更多 →
大连网站建设找简维科技:为您打造懂业务更懂用户的数字化转型引擎

大连网站建设找简维科技:为您打造懂业务更懂用户的数字化转型引擎

在这个数字化浪潮席卷全球的今天,企业想要在激烈的市场竞争中站稳脚跟,拥有一张好看的“数字名片”已经远远不够了。很多老板在刚开始接触互联网业务时,都有一个共同的困惑:为什么我花了钱建的网站,就像是在真空中自嗨?访客进来转了两圈就跑了,线索石沉大海,甚至连客服…

2026/8/14 0:01:27 阅读更多 →

周新闻

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁 【免费下载链接】baidupankey 在线查询网盘提取码(维护中 rm repo) 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否曾经在深夜寻找一份重要资料&#x…

2026/8/13 2:38:34 阅读更多 →
如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南 【免费下载链接】chinese_license_plate_generator 中国车牌生成器 项目地址: https://gitcode.com/gh_mirrors/ch/chinese_license_plate_generator 中国车牌生成器是一个基于Python的开源项目&#xff0c…

2026/8/13 10:41:52 阅读更多 →
收藏!小白程序员轻松入门大模型,从Harness工程开始实践

收藏!小白程序员轻松入门大模型,从Harness工程开始实践

文章强调学习大模型不应只关注模型本身,而应重视模型外的系统搭建,即Harness。提出AgentModelHarness的实用公式,详细介绍Harness的四个层次:持久化层、执行层、控制层和观察与验证层。文章还探讨了上下文工程、工具设计、AGENTS.…

2026/8/13 10:41:51 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/13 10:41:50 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/13 10:41:49 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/13 10:41:49 阅读更多 →