Java中的四种内部类

ops/2024/10/20 19:11:57/

Java中的四种内部类,我们可以想象成一个家庭里的不同成员,每个成员都有其特殊的角色:

  1. 成员内部类(Member Inner Class) - 就像家里的孩子,它们属于家庭(类),并且可以在家里(类)的任何地方出现。它们可以访问家里的所有资源,包括私有的。

    // 外部类
    public class OuterClass {private String secret = "I am a secret!";// 成员内部类public class InnerClass {// 成员内部类可以访问外部类的私有成员public void revealSecret() {System.out.println("The secret is: " + secret);}}// 测试方法public void testInner() {InnerClass inner = new InnerClass();inner.revealSecret();}
    }
  2. 静态内部类(Static Nested Class) - 类似于家庭中的宠物,虽然它们也是家的一部分,但它们不直接依赖于家庭成员(外部类实例)。宠物有自己的空间,不需要与主人共享一切。

    // 外部类
    public class OuterClass {// 静态内部类public static class StaticNestedClass {// 静态内部类可以拥有静态成员public static String sharedInfo = "I am shared info!";}// 测试方法public void testStaticInner() {StaticNestedClass staticInner = new StaticNestedClass();System.out.println(staticInner.sharedInfo);}
    }
  3. 局部内部类(Local Inner Class) - 相当于家人邀请的朋友,只存在于某次聚会(方法)中,外面的人不认识他。一旦聚会结束,他就消失了。

    // 外部类
    public class OuterClass {// 方法内的局部内部类public void method() {class LocalInnerClass {public void sayHello() {System.out.println("Hello from the local inner class!");}}// 创建局部内部类的实例LocalInnerClass localInner = new LocalInnerClass();localInner.sayHello();}
    }
  4. 匿名内部类(Anonymous Inner Class) - 想象成家里的神秘访客,没有名字,只有行为。他们来了,做了些事情,然后就消失在夜色中。

    // 使用匿名内部类实现接口
    public class OuterClass {public void useAnonymousInner() {Runnable runnable = new Runnable() { // 匿名内部类@Overridepublic void run() {System.out.println("Running...");}};runnable.run(); // 调用run方法}
    }

http://www.ppmy.cn/ops/127062.html

相关文章

SpringBoot智能推荐:健康生活新体验

4系统概要设计 4.1概述 本系统采用B/S结构(Browser/Server,浏览器/服务器结构)和基于Web服务两种模式,是一个适用于Internet环境下的模型结构。只要用户能连上Internet,便可以在任何时间、任何地点使用。系统工作原理图如图4-1所示: 图4-1系统工作原理…

力扣 中等 143.重排链表

文章目录 题目介绍题解 题目介绍 题解 class Solution {public void reorderList(ListNode head) {ListNode mid middleNode(head);ListNode head2 reverseList(mid);while (head2.next ! null) {ListNode nxt head.next;ListNode nxt2 head2.next;head.next head2;head2.…

智联云采 SRM2.0 testService SQL注入漏洞复现

0x01 产品简介 智联云采是一款针对企业供应链管理难题及智能化转型升级需求而设计的解决方案,针对企业供应链管理难题,及智能化转型升级需求,智联云采依托人工智能、物联网、大数据、云等技术,通过软硬件系统化方案,帮助企业实现供应商关系管理和采购线上化、移动化、智能…

K8s-pod控制器HPA、DS、Job、CJ

一、Horizontal Pod Autoscaler(HPA) 在上一节,我们已经可以实现通过手工执行kubectl scale命令实现Pod扩容或缩容,但是这显然不符合Kubernetes的定位目标——自动化、智能化。 Kubernetes期望可以实现通过监测Pod的使用情况,实现pod数量的自…

基于SpringBoot+Vue+uniapp的诗词学习系统的详细设计和实现

详细视频演示 请联系我获取更详细的演示视频 项目运行截图 技术框架 后端采用SpringBoot框架 Spring Boot 是一个用于快速开发基于 Spring 框架的应用程序的开源框架。它采用约定大于配置的理念,提供了一套默认的配置,让开发者可以更专注于业务逻辑而不…

LeetCode搜索插入位置

题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 示例 1: 输入: nums [1,3,5,6], target 5 输出: 2 …

可能是NextJs(使用ssr-api route)打包成桌面端的最佳解决方式

可能是NextJs(使用ssr/api route)打包成桌面端的最佳解决方式 前言 在我使用nextron(nextelectron)写了一个项目后打包发现nextron等一系列桌面端框架在生产环境是不支持next的ssr也就是api route功能的这就导致我非常难受,耗费了小半个月结…

c4d哪个渲染器好用简单?c4d常用渲染器介绍

在3D设计领域,Cinema 4D(C4D)是一款功能强大的软件,被广泛应用于建模、动画和渲染。然而,C4D内置的渲染器可能无法满足所有用户的需求,因此选择一个合适的第三方渲染器变得尤为重要。 本文将为您介绍一些C…