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

前言

打好基础,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.hqwc.cn/news/474334.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python学习路线图

防止忘记,温故知新 进阶路线

计算机设计大赛 深度学习YOLO抽烟行为检测 - python opencv

文章目录 1 前言1 课题背景2 实现效果3 Yolov5算法3.1 简介3.2 相关技术 4 数据集处理及实验5 部分核心代码6 最后 1 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 基于深度学习YOLO抽烟行为检测 该项目较为新颖,适合作为竞赛课…

【C++初阶】第三站:类和对象(中) -- 日期计算器

目录 前言 日期类的声明.h 日期类的实现.cpp 获取某年某月的天数 全缺省的构造函数 拷贝构造函数 打印函数 日期 天数 日期 天数 日期 - 天数 日期 - 天数 前置 后置 前置 -- 后置-- 日期类中比较运算符的重载 <运算符重载 运算符重载 ! 运算符重载 …

19.Qt 组合框的实现和应用

目录 前言&#xff1a; 技能&#xff1a; 内容&#xff1a; 1. 界面 2.槽 3.样式表 参考&#xff1a; 前言&#xff1a; 学习QCombox控件的使用 技能&#xff1a; 简单实现组合框效果 内容&#xff1a; 1. 界面 在ui编辑界面找到input widget里面的comboBox&#xff…

AutoSAR(基础入门篇)10.3-BswM配置

目录 一、ECU State Handing(ESH) 二、Module Initialization 三、Communication Control 说起BswM的配置,其实博主问过很多朋友了,大家基本都只用自动配置;很少有用到手动配置的时候,对于刚刚入门的大家来说,掌握自动配置基 本也就足够了。 一、ECU State Handing(ESH…

暴力破解(if循环)解决leetcode数字转成罗马数字

1.题目描述 2.解题思路 刚看到这个题目的时候&#xff0c;感觉说的有点啰嗦&#xff0c;其实不难发现&#xff0c;这个题目和之前的给你多少钱&#xff0c;什么2元&#xff0c;5元的&#xff0c;给你一个数字&#xff0c;让你算各种钱币有多少张。无非就是从小到大进行判断&am…

智慧图书管理系统架构设计与实现

随着数字化时代的到来&#xff0c;智慧图书管理系统在图书馆和机构中扮演着重要的角色。一个优秀的图书管理系统不仅需要满足基本的借阅管理需求&#xff0c;还需要具备高效的性能、良好的扩展性和稳定的安全性。本文将讨论智慧图书管理系统的架构设计与实现&#xff0c;以满足…

js基础篇

javascript 1.1javascript是什么&#xff1f; 是运行在浏览器【客户端】的编程语言 1.2 js的组成 ECMAScript (基础语法) Web APIs (DOM BOM) 1.3 js的书写位置 内部&#xff0c;外部&#xff0c;行内 【代码写在标签内部】 // 内部 <script>alter("你好&…

Linux|centos7下的编译|ffmpeg的二进制安装

Windows版本的ffmpeg&#xff1a; ###注意&#xff0c;高版本可能必须要windows10以及以上才支持&#xff0c;win7估计是用不了的 下载地址&#xff1a;Builds - CODEX FFMPEG gyan.dev 或者这个下载地址&#xff1a;https://github.com/BtbN/FFmpeg-Builds/releases 这两个…

Code Composer Studio (CCS) - Breakpoint (断点)

Code Composer Studio [CCS] - Breakpoint [断点] 1. BreakpointReferences 1. Breakpoint 选中断点右键 -> Breakpoint Properties… Skip Count&#xff1a;跳过断点总数&#xff0c;在断点执行之前设置总数 Current Count&#xff1a;当前跳过断电累计值 References […

力扣72. 编辑距离(动态规划)

Problem: 72. 编辑距离 文章目录 题目描述思路复杂度Code 题目描述 思路 由于易得将字符串word1向word2转换和word2向word1转换是等效的&#xff0c;则我们假定统一为word1向word2转换&#xff01;&#xff01;&#xff01; 1.确定状态&#xff1a;我们假设现在有下标i&#x…

黑马程序员-瑞吉外卖-day8

目录 菜品新增 菜品代码准备&#xff1a; 1.entity 2.mapper 3.service 4.sevice目录下的impl目录 5.controller 菜品口味代码准备&#xff1a; 1.entity 2.mapper 3.service 4.sevice目录下的impl目录 菜品新增 分析&#xff1a; 后台系统中可以管理菜品信息&…