Java,面向对象,枚举类

枚举类型本质上也是一种类,只不过这个类的对象是有限的、固定的几个,不能让用户随意创建。
场景:
开发中,如果针对于某个类,它的实例的个数是确定的。则推荐将此类声明为枚举类。
如果枚举类的实例只有一个,则可以看作是单例的实现方式。
在jdk5.0之前,使用 自定义枚举类的方法。步骤如下:
1. 私有化类的构造器
2. 声明当前类的对象的实例变量 , 要用 final 修饰
3. 提供 get 方法
4. 创建类的实例 // 要用 psf public static final )修饰,变为全局常量
以季节的枚举为例:
//自定义枚举类
class Season{//2.声明当前类的对象的实例变量,要用final修饰private final String seasonName;//季节的名称private final String seasonDesc;//季节的描述//1.私有化类的构造器private Season(String seasonName,String seasonDesc){this.seasonName = seasonName;this.seasonDesc = seasonDesc;}//3.提供get方法public String getSeasonName(){return seasonName;}public String getSeasonDesc(){return seasonDesc;}//4.创建类的实例//要用psf(public static final)修饰,变为全局常量public static final Season Spring = new Season("春天","花开的季节");public static final Season Summer = new Season("夏天","炎热的季节");public static final Season Autumn = new Season("秋天","丰收的季节");public static final Season Winter = new Season("冬天","寒冷的季节");@Overridepublic String toString(){return "Season{" +"seasonName='" + seasonName + '\'' +", seasonDesc='" + seasonDesc + '\'' +'}';}
}

在jdk5.0时,加入使用 enum定义枚举类。步骤如下:
1. 创建对象,必须在枚举类的开头声明多个对象。对象之间使用逗号隔开。
2. 声明当前类的对象的实例变量 , 要用 final 修饰
3. 私有化类的构造器
3. 提供 get 方法
还是以季节的枚举为例:
//jdk5.0中使用enum关键字定义枚举类enum Season1{//1.创建对象,必须在枚举类的开头声明多个对象。对象之间使用逗号隔开。Spring("春天","花开的季节"),Summer("夏天","炎热的季节"),Autumn("秋天","丰收的季节"),Winter("冬天","寒冷的季节");//2.声明当前类的对象的实例变量,要用final修饰private final String seasonName;//季节的名称private final String seasonDesc;//季节的描述//3.私有化类的构造器private Season1(String seasonName,String seasonDesc){this.seasonName = seasonName;this.seasonDesc = seasonDesc;}//3.提供get方法public String getSeasonName(){return seasonName;}public String getSeasonDesc(){return seasonDesc;}}

Enum类:
①使用enum定义的枚举类,默认其父类是java.lang.Enum类。(所以不能再定义其他父类)
②Enum类中的常用方法:
(如果sout输出为对象名,即默认为调用对象名.toString( )方法)
String  toString( ) : 默认返回的是常量名(对象名),可以继续手动重写该方法。
String  name( ) : 默认返回当前枚举对象的名称,当toString被重写了,想获得枚举类对象的名称,即用name( )
static  枚举类型[ ] values( ) : 返回枚举类型的对象数组。该方法可以很方便的遍历所有的枚举值,为静态方法。
具体的使用如下:(结果为四个季节(即四个对象名))
Season1[] values = Season1.values();
for (int i = 0; i < values.length; i++){System.out.println(values[i]);
}
static  枚举类型[ ] valueof( String  name ) : 返回当前枚举类对象名为name的枚举对象。(如果枚举类中不存在名为name的对象,则报错。)
int  ordinal( ) : 返回当前枚举常量的次序号,默认从零开始。(次序号即在枚举类中声明位置的排序)
枚举类实现接口:
情况①:枚举类实现接口,在枚举类中重写接口中的抽象方法。当通过不同的枚举类的对象调用此方法时,执行的时是一个方法。
情况②:枚举类实现接口,在枚举类的每个对象中重写接口中的方法。操作:在对象后面加上{},在{}里面重写接口中的方法,即为在对象中重写接口中的方法。
具体操作如下:
public class SeasonTest2
{}interface Info
{void show();
}
enum Season2 implements Info
{//1.创建对象,必须在枚举类的开头声明多个对象。对象之间使用逗号隔开。Spring("春天","花开的季节"){public void show(){System.out.println("春");}},Summer("夏天","炎热的季节"){public void show(){System.out.println("夏");}},Autumn("秋天","丰收的季节"){public void show(){System.out.println("秋");}},Winter("冬天","寒冷的季节"){public void show(){System.out.println("冬");}};//2.声明当前类的对象的实例变量,要用final修饰private final String seasonName;//季节的名称private final String seasonDesc;//季节的描述//3.私有化类的构造器private Season2(String seasonName,String seasonDesc){this.seasonName = seasonName;this.seasonDesc = seasonDesc;}//3.提供get方法public String getSeasonName(){return seasonName;}public String getSeasonDesc(){return seasonDesc;}@Overridepublic String toString(){return "Season2{" +"seasonName='" + seasonName + '\'' +", seasonDesc='" + seasonDesc + '\'' +'}';}
}

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

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

相关文章

react_11

MobX 介绍 需求&#xff0c;组件0 改变了数据&#xff0c;其它组件也想获得改变后的数据&#xff0c;如图所示 这种多个组件之间要共享状态数据&#xff0c;useState 就不够用了&#xff0c;useContext 也不好用了 能够和 react 配合使用的状态管理库有 MobX Redux 其中…

Java高频面试题——Java基础篇

java基本数据类型及对应的字节数&#xff1f;什么是自动拆装箱&#xff1f;int与integer的区别&#xff1f;项目中如何使用&#xff1f; 1.java基本数据类型及对应的字节数&#xff1f; java总共有8中基本数据类型&#xff0c;整型4种&#xff0c;浮点型2种&#xff0c;字符类…

k8s集群调度

目录 1、理论&#xff1a; 1.1、 概述&#xff1a; 1.2、Pod 是 Kubernetes 的基础单元&#xff0c;Pod 启动典型创建过程如下&#xff1a; 工作机制 **** 1.3、调度过程 *** 1.4、Predicate 有一系列的常见的算法可以使用&#xff1a; ** 1.5、 优先级由一系列键…

docker 常用

系统 Ubuntu 20.04 64位 安装文档 ubuntu&#xff1a;https://docs.docker.com/engine/install/ubuntu/ centos&#xff1a;https://docs.docker.com/engine/install/centos/ debian&#xff1a;https://docs.docker.com/engine/install/debian/ 常用命令 查看镜像 docke…

APP攻防--ADB基础

进入app包 先使用 adb devices查看链接状态 手机连接成功的 adb shell 获取到手机的一个shell 此时想进入app包时没有权限的&#xff0c;APP包一般在data/data/下。没有执行权限&#xff0c;如图 Permission denied 权限被拒绝 此时需要手机root&#xff0c;root后输入 su …

Collection子接口—List接口

Java中数组存储数据具有局限性&#xff0c;我们通常用List替代数组 1.List集合类中元素有序&#xff0c;且可重复(有序&#xff1a;按添加的顺序) 2.ArrayList、 LinkedList、Vector三种实现类 ArrayList.、LinkedList.、Vector的使用&#xff1a; ArrayList的源码分析&#x…

Java通过cellstyle属性设置Excel单元格常用样式全面总结

最近做了一个导出Excel的功能&#xff0c;导出是个常规导出&#xff0c;但是拿来模板一看&#xff0c;有一些单元格的样式设置&#xff0c;包括合并&#xff0c;背景色&#xff0c;字体等等&#xff0c;毕竟不是常用的东西&#xff0c;需要查阅资料完成&#xff0c;但是搜遍全网…

二十三种设计模式全面解析-装饰器模式的高级应用:打造灵活可扩展的通知系统

在现代软件开发中&#xff0c;通知系统是一个广泛应用的功能&#xff0c;用于实时向用户发送各种类型的通知&#xff0c;如短信、微信、邮件以及系统通知。然而&#xff0c;通知系统的需求通常是多变且动态的&#xff0c;因此需要一种灵活可扩展的设计模式来满足不同类型的通知…

ConnectionError: HTTPSConnectionPool

ConnectionError: HTTPSConnectionPool(host‘zbbfxstatic.figtingdream.com’, port443): Max retries exceeded with url: /api/cache (Caused by NewConnectionError(‘<urllib3.connection.HTTPSConnection object at 0x00000249795AD9A0>: Failed to establish a ne…

Kubernetes技术与架构-存储 3

如上所示&#xff0c;Kubernetes集群的存储层支持不同类型的存储资源&#xff0c;其提供Projected类型的存储功能整合多种存储资源&#xff0c;将secret、downwardAPI、configMap三种不同类型的存储资源整合成一个挂载到Pod的容器实例中 如上所示&#xff0c;整合两个secret类型…

Spring集成高性能队列Disruptor

Disruptor简介 Disruptor&#xff08;中文翻译为“破坏者”或“颠覆者”&#xff09;是一种高性能、低延迟的并发编程框架&#xff0c;最初由LMAX Exchange开发。它的主要目标是解决在金融交易系统等需要高吞吐量和低延迟的应用中的并发问题。 Disruptor特点 无锁并发&#x…

Ubuntu定时执行日志备份及删除脚本

第一步编写脚本文件 创建并编辑 log_bash.sh&#xff0c;并赋予脚本可执行权限 chmod X log_bash.sh # !/bin/bash# 备份路径 backup_dir"/root/test/backup_log" # 日志路径 log_dir"/root/test" log_file"test.log"mkdir -p $backup_dir cd …

【数据结构】单链表详解(超详细)

单链表是我们学习数据结构时必不可少的部分&#xff0c;但也由于指针的参与变得更加复杂&#xff0c;这篇文章学习完之后可以更好地理解与掌握链表结构 注意&#xff1a; 数据结构中&#xff0c;不在乎菜单的创建&#xff0c;注重的是功能的实现&#xff1b;菜单的创建会影响我…

Java之图书管理系统

&#x1f937;‍♀️&#x1f937;‍♀️&#x1f937;‍♀️ 今天给大家分享一下Java实现一个简易的图书管理系统&#xff01; 清风的个人主页&#x1f389;✏️✏️ &#x1f302;c/java领域新星创作者 &#x1f389;欢迎&#x1f44d;点赞✍评论❤️收藏 &#x1f61b;&…

旋转图像[中等]

优质博文&#xff1a;IT-BLOG-CN 一、题目 给定一个n n的二维矩阵matrix表示一个图像。请你将图像顺时针旋转90度。你必须在原地旋转图像&#xff0c;这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。 示例 1&#xff1a; 输入&#xff1a; matrix…

后端设计PG liberty的作用和增量式生成

Liberty&#xff08;俗称LIB和DB&#xff09;&#xff0c;是后端设计中重要的库逻辑描述文件&#xff0c;这里边包含了除过physical&#xff08;当然也有一点点涉及&#xff09;以外所有的信息&#xff0c;对整个后端设计实现有非常大的作用。借此机会&#xff0c;一起LIB做一个…

C++中的移动构造函数

C中的移动构造函数 所谓移动语义&#xff0c;指的就是以移动而非深拷贝的方式初始化含有指针成员的类对象。简单的理解&#xff0c;移动语义指的就是将其他对象&#xff08;通常是临时对象&#xff09;拥有的内存资源“移为已用”。 以前面程序中的 demo 类为例&#xff0c;该…

浅述边缘计算场景下的云边端协同融合架构的应用场景示例

云计算正在向一种更加全局化的分布式节点组合形态进阶&#xff0c;而边缘计算是云计算能力向边缘侧分布式拓展的新触角。随着城市建设进程加快&#xff0c;海量设备产生的数据&#xff0c;若上传到云端进行处理&#xff0c;会对云端造成巨大压力。如果利用边缘计算来让云端的能…

dubbo集群容错策略

相关参数在 org.apache.dubbo.common.constants.ClusterRules 策略名称作用使用场景 failover 失败启动切换 当出现失败会重试其他服务器&#xff0c;会带来更长延迟&#xff0c;通过 retries2 来设置重试次数&#xff08;不含第一次&#xff09; 通常用于读操作 failfast …

Vert.x学习笔记-Vert.x的基本处理单元Verticle

Verticle介绍 Verticle是Vert.x的基本处理单元&#xff0c;Vert.x应用程序中存在着处理各种事件的处理单元&#xff0c;比如负责HTTP API响应请求的处理单元、负责数据库存取的处理单元、负责向第三方发送请求的处理单元。Verticle就是对这些功能单元的封装&#xff0c;Vertic…