【Java】内部类、枚举、泛型

news2024/11/28 23:35:52

目录

  • 1.内部类
    • 1.1概述
    • 1.2分类
    • 1.3匿名内部类(重点)
  • 2.枚举
    • 2.1一般枚举
    • 2.2抽象枚举
    • 2.3应用1:用枚举写单例
    • 2.4应用2:标识常量
  • 3.泛型
    • 3.1泛型认识
    • 3.2泛型原理
    • 3.3泛型的定义
      • 泛型类
      • 泛型接口
      • 泛型方法
    • 3.4泛型的注意事项

1.内部类

1.1概述

内部类:指一个完全被定义在另一个类中的类。
是类中的五大成分之一,成员变量、方法、构造器、内部类、代码块。

我们一般在一个事物完全包含另一个事物,且该事物没有必要单独设计类时使用内部类。
在这里插入图片描述

1.2分类

内部类有四种形式,可分为以下四种类型:

  • 成员内部类
    在这里插入图片描述

  • 静态内部类:有static修饰的内部类,属于类而非对象
    在这里插入图片描述

  • 局部内部类:定义在方法中、代码块中、构造方法体中的类
    在这里插入图片描述

  • 匿名内部类(重点):特殊的局部内部类。

1.3匿名内部类(重点)

以前的写法: 在这里插入图片描述
引入匿名内部类后:更加方便的创建子类对象。
在这里插入图片描述
匿名内部类是类的证明:
在这里插入图片描述
应用1:
在这里插入图片描述
应用2:匿名内部类直接作为一个参数来使用。
应用3:作为一个便捷对象参数传过去
在这里插入图片描述

代码:

package d1;

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class Test {
    public static void main(String[] args) {
        JFrame win = new JFrame();
        JPanel panel = new JPanel();
        win.add(panel);

        JButton btn = new JButton("登录");
        panel.add(btn);

        btn.addActionListener(new ActionListener()
        {

            @Override
            public void actionPerformed(ActionEvent e) {
                JOptionPane.showMessageDialog(win,"登录成功!");
            }
        });

        win.setSize(500,500);
        win.setLocationRelativeTo(null);
        win.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        win.setVisible(true);
    }
}

2.枚举

枚举:枚举是一种特殊的类,特殊在固定数量的类。
语法格式:
在这里插入图片描述

2.1一般枚举

枚举类的说明:
在这里插入图片描述
在这里插入图片描述
反编译:
在这里插入图片描述

2.2抽象枚举

在这里插入图片描述

2.3应用1:用枚举写单例

在这里插入图片描述

2.4应用2:标识常量

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.泛型

3.1泛型认识

定义类、方法、接口时,同时声明了多个类型变量,成为泛型类、泛型方法、泛型接口。
ArrayList的泛型:
在这里插入图片描述
没有使用泛型的ArrayList:
在这里插入图片描述
使用泛型的ArrayList:
在这里插入图片描述

3.2泛型原理

在这里插入图片描述

3.3泛型的定义

泛型类

在这里插入图片描述
在这里插入图片描述

泛型接口

在这里插入图片描述

泛型方法

在这里插入图片描述
在这里插入图片描述

拓展:泛型的上下限:

  • 泛型上限: ? extends Car : ?能接受的必须是Car或者其子类
  • 泛型下限: ? super Car : ?能接受的必须是Car或者其父类

3.4泛型的注意事项

  • 泛型擦除
    泛型是在编译阶段存在的,一旦程序被编译成了class文件,class文件中就不存在泛型了。
    在这里插入图片描述

  • 泛型不支持基本数据类型,只支持对象类型(引用数据类型)。
    在这里插入图片描述


EOF

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

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

相关文章

高分文章发文圣体!一周80%二区以上 | GBD数据库周报(6.05~6.11)

全球疾病负担(GBD)是迄今为止规模最大、最全面的一项研究,旨在量化不同地区和不同时期的健康损失,从而改善卫生系统并消除差异。 该研究由华盛顿大学健康指标与评估研究所 (IHME) 牵头,是一项真正的全球性研究&#xf…

移动UI:小小工作台,竟然别有洞天(N多样式),上图了。

设计移动UI的工作台页面时,可以考虑以下几个方面: 布局设计:首先确定页面的布局,可以使用单栏、双栏或九宫格等等布局方式。布局应该简洁明了,方便用户快速找到需要的功能模块。功能模块:根据用户需求确定需…

Windows安装配置CUDA12.5

搞大模型往往都需要GPU加速,本次在家里的PC上安装CUDA来实现GPU加速。 一、环境准备 操作系统:Windows11 23H2 GPU:RTX 4070 Ti Super 显卡驱动:555.99 (NVIDIA GeForce 驱动程序 - N 卡驱动 | NVIDIA) …

从入门到高手的99个python案例(2)

51. 列表和数组比较 - 列表通用,NumPy数组高效。 import numpy as np normal_list [1, 2, 3] np_array np.array([1, 2, 3]) print(np_array.shape) # 输出 (3,), 数组有形状信息 52. Python的内置模块datetime - 处理日期和时间。 from datetime import…

H5拟态个人主页

演示地址:科技语者个人主页 (chgskj.cn) 文末有该项目的源码~ 这张图片的效果你是不是非常想要get同款? 源码就是这个样子 这段HTML代码构建了一个个人主页,结合了CSS样式和JavaScript功能。 下面是对代码的主要组成部分的详细解释&#x…

FPGA - Verilog题目: 非整数倍数据位宽转换24to128

题目描述: 实现数据位宽转换电路,实现24bit数据输入转换为128bit数据输出。其中,先到的数据应置于输出的高bit位。 电路的接口如下图所示。valid_in用来指示数据输入data_in的有效性,valid_out用来指示数据输出data_out的有效性…

建筑电工精选最新模拟试题(含答案)

一、填空题 1、我国安全生产的基本方针是 安全 第一,预防 为主,综合治理。 2、特种作业人员,必须积极主动参加培训与考核 。既是法律法规的规定,也是自身工作,生产及生命安全 的需要 3、触电急救&#x…

QT调用vs2019生成的c++动态库

QT调用vs2019生成的c动态库 dll库的创建方法: VS2019创建c动态链接库dll与调用方法-CSDN博客 加减法示范: 头文件 // 下列 ifdef 块是创建使从 DLL 导出更简单的 // 宏的标准方法。此 DLL 中的所有文件都是用命令行上定义的 DLL3_EXPORTS // 符号编…

植物ATAC-seq文献集锦(三)——果实发育篇

ATAC-seq在植物研究领域的应用我们已经介绍2期了,本期我们聚焦ATAC-seq技术在果实发育方向的应用案例。 植物ATAC-seq文献集锦(一)——基因组篇 植物ATAC-seq文献集锦(二)——生长发育篇 文献一:Ident…

Java学习笔记之基本数据类型转换

前言 本篇文章是基于我本人在初学JAVA阶段想记录的的学习笔记,如有错误,恳请指正。今天要干掉的是JAVA的基本数据类型转换 Java的基本数据类型转换 前言一,基本数据类型复习二,基本介绍什么是自动类型转换? 三&#…

如何实现 Python 源码压缩加密常用解决方案详细教程(更新中)

Python是一种高级的、解释型的、面向对象的编程语言,Python 码简洁易读,并且Python语言跨平台,拥有丰富的标准库和第三方库,深受开发人员的喜爱。 Python 程序扩展名 .py:这是 Python 程序的标准文件扩展名。当你创建…

B端颜值无所谓?麻痹自己可以,麻痹业务人员和客户试一试。

很多老铁觉得B端系统颜值和体验无所谓,功能好就行了,我不认同这种说法,我觉得优秀的B端系统应该是内外兼修的,而不是偏科的。你想一想你费尽研发的系统,就是因为颜值问题,你的业务人员没信息推销&#xff0…

用Canvas绘制2D平面近大远小的马路斑马线

用Canvas绘制2D平面近大远小的马路斑马线 设置canvas和上下文: 首先,你需要创建一个元素,并获取其2D渲染上下文。 绘制斑马线: 使用fillRect或strokeRect方法绘制斑马线。你可以通过循环和计算来绘制多条具有不同宽度和间隔的…

【V8引擎】 V8引擎如何运行JS的

文章目录 概要什么是V8引擎为什么需要V8引擎比较常见的javascript引起有哪些呢?V8引擎是如何工作的(V8引擎的解析过程)V8引擎的做了哪些优化 概要 本篇文章主要是讲V8引擎如何运行JS,对运行JS做了哪些优化 什么是V8引擎 V8 是一…

深度学习 - CNN

第一部分:基础知识 1. 什么是卷积神经网络(CNN) 定义和基本概念 卷积神经网络(CNN)是一种专门用于处理具有网格结构数据(如图像)的深度学习模型。它们在图像识别和计算机视觉领域表现尤为突出…

【操作与配置】Pytorch环境搭建

安装显卡驱动 显卡驱动是一种软件程序,用于控制显卡硬件与操作系统之间的通信和交互。显卡驱动负责向操作系统提供有关显卡硬件的信息,以及使操作系统能够正确地控制和管理显卡的各种功能和性能。显卡驱动还包含了针对不同应用程序和游戏的优化&#xff…

非关系型数据库NoSQL数据层解决方案 之 Mongodb 简介 下载安装 springboot整合与读写操作

MongoDB 简介 MongoDB是一个开源的面向文档的NoSQL数据库,它采用了分布式文件存储的数据结构,是当前非常流行的数据库之一。 以下是MongoDB的主要特点和优势: 面向文档的存储: MongoDB是一个面向文档的数据库管理系统&#xff0…

AI大模型四大技术架构演进选型

随着人工智能技术的迅猛发展,大模型技术架构也在不断演进和完善。大模型技术架构通过最初的简单交互,逐渐发展为可对已有模型进行能力迁移学习扩展的架构,这个过程包括了四大技术架构的演进,分别为:纯Prompt、Agent F…

香橙派AIpro测试SPI通信

香橙派AIpro开发板上有一个SPI接口,如下图红框所示, 系统启动后,其对应的设备是 /dev/spidev0.0 一 硬件回环测试 香橙派AIpro上的系统自带spidev_test工具,非常方便,可以查看其帮助信息,如下&#xff0c…

这个网站有点意思,可做SPRINGBOOT的启动图

在 SpringBoot 项目的 resources 目录下新建一个 banner.txt 文本文件,然后将启动 Banner 粘贴到此文本文件中,启动项目,即可在控制台展示对应的内容信息。 下面这个工具很好用,收藏精哦