java的内部类解析

8、Java 内部类深入解析 本文深入解析了 Java 中的内部类机制,涵盖匿名内部类、静态成员类、成员内部类的使用方法与特性。详细分析了内部类如何访问外部类成员、关键字 this 的使用规则以及多层嵌套内部类的实例关系。同时讨论了内部类的注意事项、应用场景与优势,如封装性、回调机制和代码模块化。通过示例代码和图解方式,帮助开发者更好地理解和使用 Java 内部类。 阅读详情

内部类

一般情况来讲,类和类之间都是相互独立的,内部类的意思就是打破这种独立,然后一个类成为另外一个类的内部消息,和成员变量、成员方法同等级别。

非静态内部类

非静态内部类的使用就是将内部类作为外部类的一个成员变量或者成员方法来使用,我们这里看一下它的创建以及使用:

package outandinner;

public class OuterClass {
    //成员变量
    private String name="Outerclass";
    //成员方法
    public void display(){
        System.out.println("OuterClass init------");
        System.out.println(name);
    }

    //一个内部类
    public class InnerClass{
        private String name="InnerClass";
        public void display(){
            System.out.println("InnerClass init------");
            System.out.println(name);
        }
    }

    //主函数
    public static void main(String[] args) {
        //初始化一个外部类
        OuterClass outerClass=new OuterClass();
        outerClass.display();
        //初始化一个内部类-是通过初始化外部类的这个对象来初始化内部类的
        OuterClass.InnerClass innerClass=outerClass.new InnerClass();
        innerClass.display();
    }
}

在这里插入图片描述

静态内部类

静态内部类的构造不需要依赖外部类对象,因为静态内部类是属于这个类的,而不是属于这个对象的。

package outandinner;

public class OuterClass {
    //成员变量
    private String name="Outerclass";
    //成员方法
    public void display(){
        System.out.println("OuterClass init------");
        System.out.println(name);
    }

    //一个内部类
    public static class InnerClass{
        private String name="InnerClass";
        public void display(){
            System.out.println("InnerClass init------");
            System.out.println(name);
        }
    }

    //主函数
    public static void main(String[] args) {
        //初始化一个外部类
        OuterClass outerClass=new OuterClass();
        outerClass.display();
        //初始化一个内部类-是通过初始化外部类的这个对象来初始化内部类的
        OuterClass.InnerClass innerClass= new InnerClass();
        InnerClass innerClass2= new InnerClass();
        innerClass.display();
        innerClass2.display();
    }
}

在这里插入图片描述

  • 我们静态内部类构造一个对象的时候,直观上看不能说和正常的类一模一样,只能说是毫无差别。

为什么使用内部类

  • 使用内部类可以更好的隐藏代码的细节和内部结构,封装性更好,让程序更加合理且优雅。
  • 基本的内部类可以在方法体中定义。这个时候类不能是public
31、Java 中内部类的深入解析 本文深入解析了 Java 中的内部类特性,涵盖实例初始化、匿名内部类、静态内部类、外部类关联、继承内部类、闭包与回调等核心主题。通过多个示例代码详细阐述了内部类的语法、语义和应用场景,并探讨了其优缺点及使用建议,帮助开发者更高效地在实际项目中运用内部类来优化代码结构。 阅读详情

相关推荐

9、Java 内部类深度解析

本文深入解析了 Java 内部类的各个方面,包括内部类的定义、访问限制、继承机制、静态成员限制以及编译器在内部类实现中的作用。此外,还探讨了内部类在闭包和回调机制中的应用,涉及事件处理和异步编程的实际场景。通过反编译代码分析内部类与外部类之间的关系,以及编译器生成的合成方法和构造函数。最后,总结了内部类的最佳实践建议,帮助开发者更好地利用 Java 内部类提升代码的灵活性和可维护性。

Apple的专栏 70

java 内联_Java内联类初探

java 内联 重要要点 Valhalla项目正在开发内联类,以提高Java程序对现代硬件的亲和力 内联类使开发人员能够编写行为更像Java内置基元类型的类型 内联类的实例不具有对象标识,这带来了许多优化机会 内联类的到来重新引发了有关Java泛型和类型擦除的争论 尽管很有希望,但这仍在进行中,尚未投入生产 在本文中,我将介绍内联类。 此功能是以前称为“值类型”...

cunfu6353的博客 1987

LabVIEW新手必看:5个工业自动化实战项目从零搭建(附完整代码)

本文为LabVIEW新手提供了5个从零开始的工业自动化实战项目指南,涵盖数据采集、状态机控制、PID闭环、振动监测及多站协同监控。通过详细的架构解析和关键代码片段,帮助读者快速掌握LabVIEW图形化编程的核心逻辑与工程化思维,并附完整代码实现。

agile9scrum的博客 1070

Java_5.析构函数

在创建对象时,会自动调用与该类名称相同的构造器,并在构造器中执行必要的初始化操作。幽灵引用是一种特殊的引用,它的作用是在对象被垃圾回收器回收时得到通知,但是在这个时刻之前,无法通过幽灵引用访问到这个对象。当一个对象被垃圾回收器回收时,它的幽灵引用会被放入待清理队列中,然后在Cleaner线程中执行清理操作。在Java中,如果定义了finalize()方法,当对象被垃圾回收时,该方法会自动被调用。总之,构造函数和析构函数是用于创建和销毁对象的特殊方法,可以在对象创建和销毁时执行必要的操作。

m0_74019992的博客 3230

避坑指南:PyCINRAD处理CINRAD雷达数据时遇到的5个典型报错及解决方案

本文针对使用PyCINRAD库处理CINRAD雷达基数据时常见的5个典型报错,提供了详细的解决方案。内容涵盖环境配置、数据读取、PPI可视化及性能优化等核心环节,重点解决了版本兼容性、数据异常处理和中文乱码等实际问题,帮助用户高效处理雷达基数据并生成准确的PPI图像。

cc789的博客 1067

Carla-编译CarlaUE4提示HoloLens.Automation项目缺少Windows程序集?

编译CarlaUE4提示HoloLens.Automation项目缺少Windows程序集?不妨看看这个!

DSK_981029的博客 2573

Java学习(五)

多类合作和继承

weixin_43351675的博客 260

X3850x6 6241 fireware固件升级

登录联想https://datacentersupport.lenovo.com/cn/zc网站,选择system x,x3850 x6,type选择6241 选择驱动及应用程序,BIOS/UEFI 选择lnvgy_fw_uefi_a9e156a-4.90_anyos_32-64.uxz 文件,点击下载 选择IMM2, 下载lnvgy_fw_imm2_tcoo58b-5.80_anyos_noarch.uxz ps:3837和3839会跳转到ibm网站下载 笔记本直连.

zds00virtue的博客 5452

java内部类详细解析

内部类(熟悉) 内部类的基本概念 当一个类的定义出现在另外一个类的类体中时,那么这个类叫做内部类 (Inner),而这个内部类所在的类叫做外部类(Outer) 类中的内容:成员变量、成员方法、构造方法、静态成员、构造块和静态代码块、内部类 实际作用 当一个类存在的价值仅仅是为某一个类单独服务时,那么就可以将这个 类定义为所服务类中的内部类,这样可以隐藏该类的实现细节并且可以 方便的访问外部类的私有成员而不再需要提供公有的get和set方法 内部类的分类 普通内部类 - 直接将一个类的定义放在另外一

Junsunnyl的博客 232

Mimics 21.0软件学习笔记(一)基本操作

Materialise Mimics 21.0打开工程窗口化Thresholding 二值化Region growing区域增长创建一个3D表示,并显示股骨头从髋臼中区分出来,并单独为股骨头建立3D模型 打开工程 Opening the Project 窗口化 Windowing 二值化 Thresholding 区域增长 Region Growing 建立 3D 表示 Creating a 3D representation 显示 3D 表示 Displaying a 3D representation

qq_35495464的博客 4万+

行人检测模型在海思平台上的部署:从 PyTorch 到 NNIE 深度优化与实践

摘要 本文详细介绍行人检测模型从PyTorch到海思NNIE平台的部署流程。首先分析了行人检测面临的挑战(尺度变化、遮挡、姿态多样性等)及边缘部署的优势(实时性、隐私保护等)。重点阐述了模型转换过程:PyTorch→ONNX→Caffe→NNIE-WK,其中PyTorch转ONNX需注意评估模式设置、虚拟输入匹配、操作集版本选择等关键点。文章旨在帮助开发者在海思3516D芯片上实现高效的行人检测,克服部署过程中的常见问题,最终实现边缘设备的实时目标检测能力。

FJN110的博客 216

深入解析Java 内部类

Java 内部类是面向对象编程中的一项强大工具,通过成员内部类、静态嵌套类、局部内部类和匿名内部类,开发者可以实现更模块化、封装性更强的代码。理解每种内部类的特性和适用场景,可以帮助你编写更优雅、更高效的程序。同时,避免常见误区并遵循最佳实践,能确保代码的可维护性和健壮性。

持续输出Java相关知识 1277

【DaVinci Developer专题】-36-创建一个“既读又写”的Sender Receiver Port(SR PR-Port)

有时会遇到SWC需要对一个Port进行“既可以读,也可以写”的操作。以下图为例,Test_A_SWC中Test_A_Port是P-Port;Test_B_SWC中Test_A_Port是R-Port。Test_C_SWC需要对Test_A_Port同时进行“读”和“写”。 该篇将详细介绍PR-Port的创建方法。 目录 1 创建一个S/R Port Interface 2 将一个PR-Port端口添加至Application Component 3 PR-Port端口初始化 4 Run.

「汽车电子助手」的博客 3013

深入解析Java四大内部类

本文介绍了Java中的四种内部类:成员内部类、静态内部类、局部内部类和匿名内部类。成员内部类定义在类中,可以访问外部类所有成员;静态内部类用static修饰,只能访问外部类静态成员;局部内部类定义在方法中,作用域限于方法;匿名内部类是没有类名的特殊局部内部类,常用于一次性实现接口或抽象类。文章详细说明了每种内部类的定义格式、实例化方法和注意事项,并提供了代码示例,最后总结了不同应用场景下的内部类选择依据。

m0_74934926的博客 890

AgentScope Java 2.0 项目实战:使用AgentScope Builder 构建企业级多租户 AI Agent 平台

本文基于 AgentScope Builder 源码深度分析,系统讲解多租户 AI Agent 构建平台的完整开发流程。涵盖 Spring Boot 3.x + WebFlux 后端架构、React 18 + TypeScript 前端实现、HarnessAgent 运行时、CompositeFilesystem 多租户隔离、SSE 流式对话、6 种 IM 渠道接入(钉钉/飞书/企微/GitHub/GitLab)、Git 与 Nacos 技能市场、JWT 认证、Docker Sandbox 隔离等核心技术。

program哲学 719

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Java程序员必备基础:内部类解析

前言 整理了一下内部类的相关知识,算是比较全,比较基础的,希望大家一起学习进步。 一、什么是内部类? 在Java中,可以将一个类的定义放在另外一个类的定义内部,这就是内部类。内部类本身就是类的一个属性,与其他属性 定义方式一致。 一个内部类的例子: public class Outer { private int radius = 1; public static int co...

weiwenhou的博客 1万+

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

【浅析】JAVA内部类的实现及反编译解析

使用工具(例如apktool,dex2jar-2.0,jd-gui-windows-1.4.0)将APK反编译后得到的代码看起来很奇怪,这里试着说明java对内部类的处理,以方便大家学习阅读牛人们的优代码。   下面举例对java内部类实现进行解析,以帮助分析反编译后的文件。     public class MyChartItem {     private St

junglefly的学习工作纪录 4228

efm32 入门.pdf

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

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Java内部类解析

Java内部类解析匿名内部类静态内部类 匿名内部类 下面的例子模拟了给AppView加上button类,需要给两个不同的appView传入不同的button类,并且只需要用一次, 正常的写法是如下写法: package org.example; interface Button { void ButtonFun(); } class AppView{ public sta...

qq_46627454的博客 163

Java 内部类原理解析

Java 内部类在代码中是非常常见的,但是在Android系统里,常常会因为内部类的使用导致内存泄漏的问题,所以本文对内部类从原理上做一个比较详细的解析以及如何在使用内部类时该如何避免内存泄漏 内部类的种类Java的内部类分为四种:静态内部类、成员内部类、局部内部类和匿名内部类; 静态内部类静态内部类,顾名思义是一个静态的类,代码如下public class MainActivity exte

AdobeSolo的博客 1302

Java内部类与Object类深度解析

本文深入解析Java面向对象编程中的核心概念:内部类和Object类。内部类分为静态、实例、局部和匿名四种类型,详细介绍了各类的语法特点及使用场景,重点分析了静态内部类只能访问外部类静态成员、实例内部类访问外部同名成员的特殊语法等关键细节。Object类作为所有Java类的父类,其引用可接收任意对象,体现了Java的多态特性。文章通过代码示例演示了匿名内部类的简化用法及限制条件,指出其只能访问常量且静态成员不可修改的特性。全文以技术要点为核心,结合实践案例,帮助开发者掌握这些基础但重要的Java特性。

user340的博客 1482

Java内部类的基本解析

内部类 内部类的基本概念   所谓的内部类也就是在一个类的内部进行其他类结构的嵌套操作。 为什么要使用内部类?   这就要引用一句十分著名的一本书叫《Think in java》中的一句名言了——每个内部类都能独立的继承一个(接口的)实现,所以无论外围类是否已经继承了某个(接口的)实现,对于内部类都是没有影响的。   因为内部类拥着类的一些基本特征,所以在实际问题中我们会遇到一...

weixin_30832351的博客 220

java json 内部类_使用Fastjson解析内部类的一个小问题

使用的Fastjson的版本是1.2.7和1.2.47两个版本。1. 问题使用Fastjson解析包含内部类的对象时,发生异常,代码大致如下:public class HelloController {public User test1(HttpServletRequest request) {UserInfo userInfo = new UserInfo();userInfo.setAge(1...

weixin_39950010的博客 1263

Java内部类:全面解析与实践指南

Java内部类是一种特殊的类结构,分为成员内部类、静态内部类、局部内部类和匿名内部类四种类型。它们能增强封装性、简化外部类成员访问,并实现逻辑关联。成员内部类可直接访问外部类所有成员,静态内部类不依赖外部类实例,局部内部类作用域限于方法内,匿名内部类常用于回调机制。使用内部类需注意内存泄漏风险和序列化问题,适用于多重继承模拟、工具类封装等场景,合理使用可提升代码效率,但需避免过度嵌套影响可读性。

2401_87398486的博客 959

Java 内部类解析及实战

内部类在实际开发中,尤其是匿名内部类,常用于回调、事件处理等场景,是 Java 中非常实用的语法特性。内部类最大的优势是:可以直接访问外部类的私有成员,同时不破坏外部类的封装性,这在某些场景下能让代码更简洁、更安全。在 Java 中,内部类(Inner Class) 就是定义在一个类内部的类,也被称为嵌套类。编译后,内部类会生成独立的.class文件,命名规则为:外部类名$内部类名.class。匿名内部类 方法内部(无类名) 依赖接口 / 父类 同局部内部类。// 匿名内部类实现IA接口。

2601_96334942的博客 177

Java内部类四种类型解析

Java内部类是定义在另一个类内部的类,它们提供了更好的封装性和代码组织方式。根据定义位置和特性的不同,Java内部类主要分为四种类型。

weixin_37838725的博客 400

Java 反射内部类相关问题解析

问:如下代码段,已获取外部类实例情况下如何反射实例化内部类及调用内部类方法? class OuterClass { public void func(){ System.out.println("Outer class."); } class InnerClass { private String mName; public...

weixin_44476888的博客 332
上一篇: java的线程池-ExecutorService
下一篇: Maven
@@老胡
博客等级 码龄7年 291粉丝 184原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值