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

  • 前言
  • 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.mfbz.cn/a/704543.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

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

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

一文读懂Web Codecs API:浏览器背后的媒体魔术师

引言 ​在早期的Web 网页中,视频播放通常要依靠 Flash 和 Silverlight 等插件来完成,浏览器是不支持直接播放视频的。 随着网络技术的发展,视频这种媒体方式的需求变得普遍,HTML5中,出现了一个新的元素Video&#xf…

可积分兑换收银的会员卡小程序源码系统 带完整的安装代码包+搭建部署教程

系统概述 本会员卡小程序源码系统基于主流的前后端分离架构设计,前端采用Vue.js框架开发,后端服务则通过Node.js实现,数据库选用MySQL存储会员数据和交易记录。这样的技术栈确保了系统的高性能、易维护性和良好的扩展性。 代码示例 系统特色…

Win10 打开默认共享,提示 “拒绝访问“ 解决方法

1、打开计算机管理,默认共享C盘是开启的,如下图 2、但是想要能打开,防火墙还需要开启445端口 3、此时我们可以通过如下方式进行访问 4、输入账号密码后提示 "拒绝访问" 5、解决方法: (1)打开注…

【车载AI音视频电脑】智能驾驶监控系统,校车/警车/货车/油罐车AI分析与监控方案

校车监控方案 实时视频监控、校车位置查询、视频回放、轨迹回放。 2、 预设校车行驶线路,如有偏离,产生报警。 3、 预设校车车速,如超速,产生报警。 4、 预设学生下车,抓拍图片上传监管中心、预防小孩被困车内。 5…

【MySQL】性能分析

https://www.bilibili.com/video/BV1Kr4y1i7ru/?p78 查看执行频次 查看当前数据库的 INSERT, UPDATE, DELETE, SELECT 访问频次: SHOW GLOBAL STATUS LIKE Com_______; 或者 SHOW SESSION STATUS LIKE Com_______; 慢查询日志 慢查询日志记录了所有执行时间超过指…

git下载项目登录账号或密码填写错误不弹出登录框

错误描述 登录账号或密码填写错误不弹出登录框 二、解决办法 控制面板\用户帐户\凭据管理器 找到对应的登录地址进行更新或者删除 再次拉取或者更新就会提示输入登录信息

Apple Intelligence模型细节

介绍苹果的设备端和服务器基础模型 在2024年全球开发者大会(WWDC)上,苹果推出了Apple Intelligence,这是一个深度集成到iOS 18、iPadOS 18和macOS Sequoia中的个人智能系统,并公布相关技术细节,整理关键点…

【实例分享】访问后端服务超时,银河麒麟服务器操作系统分析及处理建议

1.服务器环境以及配置 【机型】 处理器: Intel 32核 内存: 128G 整机类型/架构: x86_64虚拟机 【内核版本】 4.19.90-25.22.v2101.kylin.x86_64 【OS镜像版本】 kylin server V10 SP2 【第三方软件】 开阳k8s 2.问题现象描述 …

【python】else与循环的搭配使用

看代码时发现的一种写法,学习一下。 1.for1)break2)no break 2.while1)break2)no break 几乎所有语言中,else的常用搭配就是if,而在python中else还可以和循环搭配使用,让代码更加pyt…

什么牌子充电宝质量好耐用呢?认准这几个充电宝,凭实力出圈

在快节奏的现代生活中,科技的不断进步使得各类移动设备如手机、平板和笔记本电脑成为人们生活中不可或缺的部分。为了应对这些设备不断增长的能源需求,充电宝市场的崛起迅猛并呈现出持续增长的态势。 在选购移动电源时,如何识别性能出众、质量…

Lua解释器裁剪

本文目录 1、引言2、文件功能3、选择需要初始化的库4、结论 文章对应视频教程: 已更新。见下方 点击图片或链接访问我的B站主页~~~ Lua解释器裁剪,很简单~ 1、引言 在嵌入式中使用lua解释器,很多时候会面临资源紧张的情况。 同时&#xff0c…

海豚调度清理:使用 API 轻松清理历史工作流实例以及日志文件

💡 本系列文章是 DolphinScheduler 由浅入深的教程,涵盖搭建、二开迭代、核心原理解读、运维和管理等一系列内容。适用于想对 DolphinScheduler了解或想要加深理解的读者。 祝开卷有益。 大数据学习指南 大家好,我是小陶,DolphinS…

AI落地好项目,一张照片秒生成个人写真

AI变现好项目,秒生成个人写真 只需要输入1张照片,无需训练,就能秒级生成个人写真? 你没听错,就是这个神奇的AI工具–InstantID。 众所周知,AI图生图面临的挑战之一是无法保持较高的角色一致性&#xff0c…

敏捷项目管理工具排行榜:打造高效敏捷开发环境的利器

最常见的敏捷项目管理工具包括:Leangoo领歌、Trello、Asana、ClickUp等 在敏捷开发的世界里,项目管理工具如同指挥棒,引领着团队快速响应变化,持续交付价值。介绍几款业内领先的敏捷项目管理工具,帮组大家选择最适合自…

男士内裤买便宜还是贵的?2024年高性价比男士内裤汇总分享

男生内裤,作为贴身衣物,承载着男性的私密与舒适。然而,许多男士的内裤状况却让人大跌眼镜:穿到变形、腰部松垮无弹性,屁股后面甚至出现破洞,这样的景象已然屡见不鲜。更有些男士的内裤,中间一个…

【Pandas】可视化plot()参数kind

Pandas是一个强大的数据分析库,它内置了基于matplotlib的数据可视化功能,使得直接在DataFrame和Series上进行绘图变得非常方便。在pandas中,.plot()方法允许用户通过kind参数灵活地选择多种图表类型。 导库 import numpy as np import pand…

「51媒体」江苏有哪些媒体-参会-宣发-专访-直播

传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 在江苏省,媒体资源丰富,涵盖了参会、宣发、专访和直播等多个方面。以下是对这些媒体资源的详细归纳: 一、参会媒体 本地主流媒体:如无锡日…

HTTP3版本和实现验证

HTTP3协议基于Google的 QUIC 协议,由互联网工程任务组(IETF)来制定。目录还是草案,已经进行到第33版。 HTTP3 是基于 QUIC 协议的 http。传输层是UDPQUIC,应用层仍是HTTP,即request/respose, request里也仍…

学会情感化设计,让用户舍不得离开!

万物皆有个性,万物都会发出情感信号。即使这不是设计者的初衷,用户在浏览网站时也会推断出网站的个性,体验到网站的情感。 — 用户体验设计大师 Don Norman 正如设计大师唐诺曼所说,情感是我们生活重要的组成部分,情感…