java的面向对象编程(oop)——认识枚举

news2025/1/9 3:05:50

前言

打好基础,daydayup!

枚举 

1,认识枚举:

枚举是一种特殊类,用enum语句修饰。与普通类不同的是:枚举类的第一行只能写一些合法的标识符(名称),多个名称用逗号隔开。这些标识符(名称)的本质是常量,每个常量会记住枚举类的一个对象。

2,枚举的格式: 

表达式如下:

修饰符 enum 枚举类名{
名称1,名称2,...;

...其他内容...

}

例:

public enum EnumDemo {
    A,B,C;
    public  void demo1(){}
}

 注:枚举类不能在外部额外创建对象,只能在内部创建对象。内部创建了几个对象,就只能拥有几个对象。创建新对象会报错。同时,如果构建了构造器,那么这个构造器是私有非公开的

如下图:

然后通过javap命令在cmd中进行编译,可以发现枚举的对象都是由final进行修饰的,所以枚举都是最终类,不能被继承。

同时通过反编译可以观测到枚举类是自动继承java.lang.Enum这个类的。并同时继承了values和valueOF两个方法。

3, 枚举的自带方法

1,values方法:

该方法可以把枚举类中的所有对象添加到数组并遍历出来

如下图所示:

2,valueOF方法:

该方法可以通过调用枚举标识符(名称),来调用对象,并可以通过ordinal语句来查看对象索引。值得注意的是:“直接调用对象”和“通过调用名字来调用对象”,从结果上来看效果是一样的,但意义是完全不同的,一定要注意。

4,抽象枚举 

和普通枚举不同,抽象枚举不能直接创建对象。若是直接创建对象,会报错说把类改成抽象类或移除抽象方法。

所以在抽象枚举中,需要在定义对象时重新定义方法。这样就可以避免报错。

5,枚举的使用场景

1,实现单例

单例是把类的构造器私有;定义一个类变量储存类 的一个对象:提供一个类方法返回对象。其特点为:在获取类的对象时,对象已经创建好了。

单例相关可以看这篇

java的面向对象编程(oop)——static概述及初始单例设计模式

这里用枚举类会有一个简单做法。如下

2,用来表示一组信息,然后作为参数进行传输(需要严格限定信息时)

实验要求:男女分类,如果是男生,向左走;如果是女生,向右走。

同样的实验要求也可以用常量做,但是用枚举的好处在于,分类信息一旦确定,很难轻易更改,不容易出差错。但是会比较死板,如果需要灵活的修改数据,还是用常量的方法来做。

结语:

枚举是一个比较封闭式的语句。优点在于数据不容易被篡改,非常安全。缺点在于如果需要经常更改变量方法,则会有些力不从心。总结结束,撒花!!!

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

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

相关文章

相机图像质量研究(16)常见问题总结:光学结构对成像的影响--IRCUT

系列文章目录 相机图像质量研究(1)Camera成像流程介绍 相机图像质量研究(2)ISP专用平台调优介绍 相机图像质量研究(3)图像质量测试介绍 相机图像质量研究(4)常见问题总结:光学结构对成像的影响--焦距 相机图像质量研究(5)常见问题总结:光学结构对成…

原型模式-Prototype Pattern

原文地址:https://jaune162.blog/design-pattern/prototype-pattern/ 引言 在Java中如果我们想要拷贝一个对象应该怎么做?第一种方法是使用 getter和setter方法一个字段一个字段设置。或者使用 BeanUtils.copyProperties() 方法。这种方式不仅能实现相同类型之间对象的拷贝,…

第三百四十九回

文章目录 1. 概念介绍2. 原理与方法2.1 知识对比2.2 使用方法 3. 示例代码4. 内容总结 我们在上一章回中介绍了"加密包crypto"相关的内容,本章回中将介绍characters包.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 在项目中会遇到获取字…

解决vscode报错,在赋值前使用了变量“XXX“

问题:如图所示 解决方法: 法一: 补全函数使其完整 法二: 使用断言

Python算法探索:从经典到现代

目录 引言 一、经典算法:快速排序 示例代码: 二、经典算法:二分查找 示例代码: 三、现代算法:支持向量机(SVM) 示例代码: 四、现代算法:神经网络 示例代码&…

从汇编分析C语言可变参数的原理,并实现一个简单的sprintf函数

C语言可变参数 使用printf等函数的时候函数原型是printf(const char* fmt, ...), 这一类参数的个数不限的函数是可变参数 使用 使用一个头文件stdarg.h, 主要使用以下的宏 typedef char * va_list;// 把 n 圆整到 sizeof(int) 的倍数 #define _INTSIZEOF(n) ( (sizeo…

STM32 USART串口通信

目录 USART串口 串口发送 串口发送接收 串口收发HEX数据包 串口收发文本数据包 USART串口 串口发送 Serial.c #include "stm32f10x.h" // Device header #include "stdio.h" #include "stdarg.h"/*** brief 初始化串口以…

leetcode:96.不同的二叉搜索树

解题思路: 输入n3 n 0 1个 n 1 1个 n 2 2个 头1头2头3 头1 左子树0节点(个数)x右子树2个节点(个数) 头2 左子树1节点(个数)x右子树1个节点(个数) 头3 左子…

Android 13.0 SystemUI下拉状态栏定制二 锁屏页面横竖屏解锁图标置顶显示功能实现

1.前言 在13.0的系统rom定制化开发中,在关于systemui的锁屏页面功能定制中,由于在平板横屏锁屏功能中,时钟显示的很大,并且是在左旁边居中显示的, 由于需要和竖屏显示一样,所以就需要用到小时钟显示,然后同样需要居中,所以就来分析下相关的源码,来实现具体的功能 如图…

租赁香港服务器多少钱一个月?24元

阿里云香港服务器2核1G、30M带宽、40GB ESSD系统盘优惠价格24元/月,288元一年,每月流量1024GB,多配置可选,官方优惠活动入口 https://t.aliyun.com/U/bLynLC 阿里云服务器网aliyunfuwuqi.com分享阿里云香港服务器优惠活动、详细配…

VMware Workstation 17.0 虚拟机的安装、配置、创建运行DOS、Windows、Linux和VMware ESX(详细图文搭建系统教程)

VMware Workstation 17.0 虚拟机的安装、配置、创建运行DOS、Windows、Linux和VMware ESX(图文教程) 一、VMware Workstation是什么?1.1 VMware Workstation 17.0简介1.2 VMware Workstation 17.0新特性1.3 VMware Workstation 17.0下载地址1…

内容安全审核系统的设计思路

今年负责的APP产品涉及到内容的审核,并且针对性的做了一套内容审核系统和账号安全体系。因此总结了一些经验。 内容审核基础逻辑: 内容类型:文本、图片、视频、音频 审核类型:涉黄、暴恐、涉政、广告、垃圾违禁、辱骂自定义&…

【Git】.gitignore 的匹配规则

每行一个规则:每行只能包含一个规则,多个规则需要分别写在不同的行上。 示例: # 忽略日志文件 logs/ # 忽略临时文件 temp.txt种类匹配: 文件:在规则的开头指定文件名或路径,如 file.txt。 示例&#xff1a…

leetcode hot100不同路径

本题可以采用动态规划来解决。还是按照五部曲来做 确定dp数组:dp[i][j]表示走到(i,j)有多少种路径 确定递推公式:我们这里,只有两个移动方向,比如说我移动到(i,j&#x…

第7章 Page446~449 7.8.9智能指针 std::unique_ptr

“unique_ptr”是“独占式智能指针” 名字透露身份&#xff0c;“unique_ptr”是“独占式智能指针”。使用它管理前面的O类指针&#xff1a; 演示1&#xff1a; 例中 p 是一个智能指针。其中的“<O>”指明它所指向的数据类型是“O”。除了创建方法不太一样&#xff0c;…

Flutter 动画(显式动画、隐式动画、Hero动画、页面转场动画、交错动画)

前言 当前案例 Flutter SDK版本&#xff1a;3.13.2 显式动画 Tween({this.begin,this.end}) 两个构造参数&#xff0c;分别是 开始值 和 结束值&#xff0c;根据这两个值&#xff0c;提供了控制动画的方法&#xff0c;以下是常用的&#xff1b; controller.forward() : 向前…

什么是自编码器Auto-Encoder?

来源&#xff1a;https://www.bilibili.com/video/BV1Vx411j78H/?spm_id_from333.1007.0.0&vd_sourcef66cebc7ed6819c67fca9b4fa3785d39 为什么要压缩呢&#xff1f; 让神经网络直接从上千万个神经元中学习是一件很吃力的事情&#xff0c;因此通过压缩提取出原图片中最具代…

使用汇编程序恢复C库、动态链接器

文章目录 写在前面背景原理动态链接器C库 汇编代码示例删除C库删除动态链接器 写在前面 上层语言的好处就是方便&#xff0c;但无法触摸规则的底层&#xff0c;所有的规则都是别人制定的 学习底层原理不仅可以让我们对高级语言的规则有更深的理解&#xff0c;而且可以从自己的…

二维数组传参的本质(详解)

目录 一、前言二、分析本质三、总结 一、前言 有时候我们有⼀个⼆维数组的需要传参给⼀个函数的时候&#xff0c;我们是这样写的&#xff1a; #include <stdio.h> void test(int a[3][5], int r, int c) {int i 0;int j 0;for (i 0; i < r; i){for (j 0; j <…

第三百四十八回

文章目录 1. 概念介绍2. 使用方法2.1 List2.2 Map2.3 Set 3. 示例代码4. 内容总结 我们在上一章回中介绍了"convert包"相关的内容&#xff0c;本章回中将介绍collection.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. 概念介绍 我们在本章回中介绍的内容是col…