内部类 --java学习笔记

内部类

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

 内部类四种形式:

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

    成员内部类不能直接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.mfbz.cn/a/360556.html

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

相关文章

一种手机短信验证码登录平台的解决方案

前提 爬取数据时,请求需要带上Cookie,这是很常见的一种防爬手段。更新Cookie,常用的方法就是Selenium模拟输入用户名和密码;偶尔会遇到图片验证码,现在打码平台很多且技术也很成熟,这个已经不成问题。所谓…

Qt QScrollArea 不显示滚动条 不滚动

使用QScrollArea时,发现添加的控件超出QScrollArea 并没有显示,且没有滚动条效果 原因是 scrollArea指的是scrollArea控件本身的大小,肉眼能看到的外形尺寸。 scrollAreaWidgetContents指的是scrollArea控件内部的显示区域,里面可…

【笔记】React-Native跟Android交互--简单示例

/** * 使用命令 npx react-nativelatest init DemoRN创建项目 * * "react": "18.2.0", * "react-native": "0.73.2" * * 官网有详细教程:https://reactnative.dev/docs/native-modules-android */ 一、RN invoke androi…

大创项目推荐 题目:基于深度学习的中文汉字识别 - 深度学习 卷积神经网络 机器视觉 OCR

文章目录 0 简介1 数据集合2 网络构建3 模型训练4 模型性能评估5 文字预测6 最后 0 简介 🔥 优质竞赛项目系列,今天要分享的是 基于深度学习的中文汉字识别 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! &a…

C 变量

目录 1. C变量 2. C变量定义 2.1 变量初始化 2.2 C中的变量声明 3. C中的左值(Lvalues)和右值(Rvalues) 1. C变量 在C语言中,变量可以根据其类型分为以下几种基本类型: 整型变量:用…

2.室内设计学习 - CAD 2021 调整经典界面教程及基本设置

设置经典界面 1.在第二行的空白处右击,弹出对话框,并点击【关闭】,关闭掉。 2.菜单栏没有显示的情况下,在最上面的一排,点击向下的箭头展开下拉框,勾选 【显示菜单栏】 3.点击菜单【工具】-【工具栏】-【a…

【Docker】在Windows下使用Docker Desktop创建nginx容器并访问默认网站

欢迎来到《小5讲堂》,大家好,我是全栈小5。 这是《Docker容器》序列文章,每篇文章将以博主理解的角度展开讲解, 特别是针对知识点的概念进行叙说,大部分文章将会对这些概念进行实际例子验证,以此达到加深对…

AI人工智能可以怎么应用?——GPT4v图文识别问答功能

沃卡 AI 已支持 AI识图问答TTS语音对话文档总结对话Dall E3 对话文生图国内大模型集合AI 绘画思维导图,而且功能还在不断更新优化,丰富好用!一个系统满足您多个需求! 大家可以通过收藏网页www.woka.chat 直接进行访问&#xff0c…

10s 内得到一个干净、开箱即用的 Linux 系统

安装 使用官方脚本安装我的服务器不行 官方脚本 mkdir instantbox && cd $_ bash <(curl -sSL https://raw.githubusercontent.com/instantbox/instantbox/master/init.sh) 下面是我的完整安装过程 mkdir /opt/instantbox cd /opt/instantbox 1.脚本文件 (这个没…

Asp.net移除Server, X-Powered-By, 和X-AspNet-Version头

移除X-AspNet-Version很简单,只需要在Web.config中增加这个配置节: <httpRuntime enableVersionHeader"false" />移除Server在Global.asax文件总增加&#xff1a; //隐藏IIS版本 protected void Application_PreSendRequestHeaders() {HttpContext.Current.Res…

数据结构day7

1.思维导图 1.二叉树递归创建 2.二叉树先中后序遍历 3.二叉树计算节点 4.二叉树计算深度。 5.编程实现快速排序降序

C# Onnx yolov8 水表读数检测

目录 效果 模型信息 项目 代码 训练数据 下载 C# Onnx yolov8 水表读数检测 效果 模型信息 Model Properties ------------------------- date&#xff1a;2024-01-31T10:18:10.141465 author&#xff1a;Ultralytics task&#xff1a;detect license&#xff1a;AGPL-…

Linus Torvalds的20个事实

Linus Torvalds 是 Linux 操作系统的创造者&#xff0c;至今还在维护内核。本文是他的自传《Just for fun》的简短摘录&#xff0c;关于他个人的20个事实&#xff0c;比如他的老婆是他的学生。 Brief: Some known, some lesser known – here are 20 facts about the Linus Tor…

【Maven基础】依赖插件管理工具

Maven Maven 作用Maven 安装Maven 目录Maven config settings创建 Maven 项目运行 Java 文件Maven 坐标导入 Maven 项目依赖管理依赖配置 依赖传递排除依赖 依赖范围生命周期test跳过 Test Maven 作用 Maven 安装 Maven 目录 bin 存放可执行文件 config 存放 Maven 的配置文件 …

C++ 数论相关题目,博弈论,SG函数,集合-Nim游戏

给定 n 堆石子以及一个由 k 个不同正整数构成的数字集合 S 。 现在有两位玩家轮流操作&#xff0c;每次操作可以从任意一堆石子中拿取石子&#xff0c;每次拿取的石子数量必须包含于集合 S &#xff0c;最后无法进行操作的人视为失败。 问如果两人都采用最优策略&#xff0c;…

C++入门学习(二十一)选择结构-if语句

1、单行if语句 假设有个人去酒吧&#xff0c;但是酒吧不允许18岁以下的人进入&#xff0c;此时可以使用if语句判断. #include <iostream> #include <string> using namespace std;int main() { int a;cout<<"请输入您的年龄&#xff1a;"<…

软考复习之数据结构篇

算法设计 迭代法&#xff1a;用于求方程的近似根。 1、若方程无解&#xff0c;则算法求出的近似根序列就不会收敛&#xff0c;迭代过程会变成死循环&#xff0c;因此在使用迭代算法前应先考查方程是否有解&#xff0c;并在程序中对迭代的次数给予限制。 2、方程虽有解&#…

PyTorch深度学习实战(34)——Pix2Pix详解与实现

PyTorch深度学习实战&#xff08;34&#xff09;——Pix2Pix详解与实现 0. 前言1. 模型与数据集1.1 Pix2Pix 基本原理1.2 数据集分析1.3 模型构建策略 2. 实现 Pix2Pix 生成图像小结系列链接 0. 前言 Pix2Pix 是基于生成对抗网络 (Convolutional Generative Adversarial Netwo…

Fog Volume 3

仅支持内置渲染管线 Fog Volume 3是一个体积雾渲染器,旨在模拟各种大气效果。它提供了大量的控制,以帮助您在外观和性能方面满足您的需求。有关详细信息,请查看文档。 下载: ​​Unity资源商店链接 资源下载链接 效果图:

springBoot - mybatis 多数据源实现方案

应用场景: 多数据源 小型项目 或者 大项目的临时方案中比较常用.在日常开发中,可能我们需要查询多个数据库,但是数据库实例不同,导致不能通过 指定schema的方式 区分不同的库, 这种情况下就需要我们应用程序配置多数据源 实现方式: 首先自定义实现 datasource数据源 为当前…
最新文章