内部类 --java学习笔记

news2025/1/16 1:52:23

内部类

  • 是类中的五大成分之一(成员变量、方法、构造器、内部类、代码块),如果一个类定义在另一个类的内部,那么这个类就是内部类
  • 当一个类的内部包含了一个整体的事务,且这个事务没必要单独设计时,就可以把这个事务设计成内部类

 内部类四种形式:

  • 成员内部类
    就是类中的一个普通成员,类似普通的成员变量、成员方法

    成员内部类不能直接new创建
     要先new出外部类再.new 内部类

    使用方法与普通的类一样

    成员内部类可以正常访问外部类的实例成员和静态成员,可以把成员内部类的方法理解为一个正常的类方法,可以在成员内部类的类方法中通过外部类名.this.变量名拿到外部类的同名成员变量

    test结果:

     
  • 静态内部类
    有static修饰的内部类,属于外部类自己持有

    静态内部类的创建​​​​​​​
    使用方法与普通类一样
    访问权限同静态方法一样,不可以访问外部类的实例成员,但是可以访问外部类的静态成员
    test结果:
  • 局部内部类
    定义在方法中、代码块中、构造器等执行体中的类
    鸡肋语法,用处不大,知道就行
  • 匿名内部类
    一种特俗的局部内部类,所谓匿名,指的是程序员不需要为这个类声明名字

    运行结果:

    匿名内部类通常作为一个参数传递给方法
    案例:设计一个方法使发出各种动物不同的叫声
    public class Test {
        public static void main(String[] args) {
            cry(new Animal(){    //直接调用匿名内部类对象作为实参
                @Override
                public void cry() { //实现cry方法
                    System.out.println("喵喵喵的叫");
                }
            });
        }
    
        public static void cry(Animal a){   //设计一个方法用来发出各种动物的叫声
            a.cry();
        }
    }
    
    interface Animal { //接口Animal
        public abstract void cry();
    }

    运行结果:

    匿名内部类不是主动去用,而是需要的时候被动去用,比如某些方法需要一个接口类型的对象,就需要在实参部分直接写一个匿名内部类
    最终的核心目的是:简化代码

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1416942.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java面试题:JMM与锁的理论

王有志,一个分享硬核Java技术的互金摸鱼侠 加入Java人的提桶跑路群:共同富裕的Java人 今天是《面霸的自我修养》的第二弹,内容是Java并发编程中关于Java内存模型(Java Memory Model)和锁的基础理论相关的问题。这两块内…

网工必备工具:不懂它,何谈高手之位?

点开之前,你脑子里闪出来的工具是什么?ping?又或是arp、tracert、route……? 今天要给你分享的是非常经典的Linux网络抓包工具Tcpdump。 它允许用户拦截和显示发送或收到过网络连接到该计算机的TCP/IP和其他数据包。 Tcpdump 适用…

【语录】岁月

中年 写中年,应该是年少励志三千里 踌躇百步无寸功,转眼高堂已白发 儿女蹒跚学堂中,不如意事常八九,可与人言无二三 可是诸位,不用悲伤,稻盛和夫说, 人生并不是一场物质的盛宴,而是…

12.Golang中类的表示与封装

目录 概述类的表示代码结果 类的封装代码结果 结束 概述 Golang中类的表示与封装 类的表示 代码 注释掉的代码,并不能拿来当赋值或获取值来使用。 package mainimport "fmt"// 类大写则代表,可以被其它包使用 type Hero struct {// 属性方法大…

30岁以就业为目标学前端,快歇着吧;反之50岁都不晚。

Hi,我是贝格前端工场,首先声明声明我们不搞前端培训,有很多老铁在留言中问我关于前端学习的问题,最普遍的一个问题就是30岁以后学前端晚了吗?今天借着此篇文章回答一下。 一、30岁学前端的三种人 首先抛开年龄不说&am…

【计算数组连续值的移动距离】及【计算遥控器按键总次数】

计算数组连续值的移动距离及计算遥控器按键总次数 计算数组连续值的移动距离计算遥控器按键总次数 计算数组连续值的移动距离 /*** 计算数组连续值的移动距离* 给定一个乱序的整数数组,数组中值为1~n,请计算出所有数字移动到比其大1的数字位置的距离和。…

【vue2】路由之 Vue Router

文章目录 一、安装二、基础使用1、简单的示例2、动态路由2.1 定义动态路径参数2.2 获取动态路径的参数2.3 捕获所有路由 3、嵌套路由4、编程式的导航4.1 router.push4.2 router.replace4.3 router.go(n) 5、命名路由6、重定向 三、进阶1、导航守卫1.1 全局前置守卫1.2 全局后置…

1Panel CloudFlare证书申请失败的解决方案

在升级1Panel后,使用 CloudFlare DNS验证时,会提示 [*.biliwind.com] [*.biliwind.com] acme: error presenting token: cloudflare: failed to find zone biliwind.com.: ListZonesContext command failed: Invalid request headers (6003) 为解决此问…

如何在Arxiv上预发表自己的手稿

1. 使用latex编辑好自己的手稿。可以使用latex软件或者overleaf。尽量避免警告,否则会在上传到arxiv时出现意外的错误。 2. https://arxiv.org/登陆并注册arxiv账号 3. 点击 开始新的提交(START NEW SUBMISSION) 4. 主要的问题是参考文献的导…

C++:auto 关键字 范围for

目录 auto 关键字: 起源: auto的使用细则: auto不能推导的场景: 范围for: 范围for的使用条件: C的空指针: 注意: auto 关键字: 起源: 随着程序越…

全角色服务、全场景支撑、全业务应用的新一代智慧教室

新一代智慧教室以“数智化助力高质量人才培养”为核心目标,以AI赋能的智能硬件为基础构建多形态智慧教学环境,以中台为支撑实现数据、设备、系统、业务的互联互通、开放共享,以平台全面覆盖教学应用,采集、汇聚、挖掘、分析课前课…

【周赛】第382场周赛

🔥博客主页: A_SHOWY🎥系列专栏:力扣刷题总结录 数据结构 云计算 数字图像处理 力扣每日一题_ 从这一场(第382场周赛)周赛开始记录,目标是尽快达到准确快速AC前三道题,每场比赛…

【服务器GPT+MJ+GPTs】创建部署GPT+MJ+GPTs程序网站

目录 🌺【前言】 🌺【准备】 🌺【宝塔搭建GPT+MJ+GPTs】 🌼1. 给服务器添加端口 🌼2. 安装宝塔 🌼3. 安装Docker 🌼4. 安装ChatGPT程序 🌼5. 程序更新 🌼6. 修改端口 | 密码 🌼7. 绑定域名+申请SSL证书 🌺【前言】 相信大家都对openai的产品ch…

【2024】Docker部署Redis

1.说明: 因为容器实例的运行是有生命周期的,一些redis的备份、日志和配置文件什么的最好还是放在服务器本地。这样当容器删除时,我们也可以保留备份和日志文件。所以先在本地服务器安装redis并配置文件设置。下面是安装步骤: 2.安装步骤 1…

Unity 命令模式(实例详解)

文章目录 示例1:基础命令类结构示例2:旋转对象命令示例3:增加道具命令示例4:切换场景命令示例5:播放音效命令 在Unity中使用命令模式(Command Pattern)是一种常见的设计模式,用于实现…

LeetCode344反转字符串(java实现)

今天我们来分享的题目是leetcode344反转字符串。题目描述如下: 我们观察题目发现,题目要求使用O(1)的空间解决这一问题。那么我们就不能进行使用开辟新的数组进行反转了。 解题思路:那么该题的我得思路是使用双指针的方法进行题解&#xff0…

深度强化学习(王树森)笔记01

深度强化学习(DRL) 本文是学习笔记,如有侵权,请联系删除。本文在ChatGPT辅助下完成。 参考链接 Deep Reinforcement Learning官方链接:https://github.com/wangshusen/DRL 源代码链接:https://github.c…

80.网游逆向分析与插件开发-背包的获取-自动化助手显示物品数据1

内容参考于:易道云信息技术研究院VIP课 上一个内容:升级Notice类获得背包基址-CSDN博客 码云地址(ui显示角色数据 分支):https://gitee.com/dye_your_fingers/sro_-ex.git 码云版本号:3be017de38c50653b…

【算法专题】二分查找(进阶)

📑前言 本文主要是二分查找(进阶)的文章,如果有什么需要改进的地方还请大佬指出⛺️ 🎬作者简介:大家好,我是青衿🥇 ☁️博客首页:CSDN主页放风讲故事 🌄每日…

【代码随想录】LC 242. 有效的字母异位词

文章目录 前言一、题目1、原题链接2、题目描述 二、解题报告1、思路分析2、时间复杂度3、代码详解 前言 本专栏文章为《代码随想录》书籍的刷题题解以及读书笔记,如有侵权,立即删除。 一、题目 1、原题链接 242. 有效的字母异位词 2、题目描述 二、解题…