00014.04JDK1.5之后枚举的语法

一、什么是枚举

枚举是列出某些有穷序列集的所有成员的程序,或者是一种特定类型对象的计数。本质就是,一个类里定义几个静态变量,每个变量都是这个类的实例

二、枚举怎么使用

JDK1.5之后枚举的语法

1、如何声明和使用枚举

[修饰符] enum 枚举类型名{
常量对象列
其它成员列表
}
在这里插入图片描述
在这里插入图片描述
枚举使用方式
在这里插入图片描述
在这里插入图片描述
其实什么都不是,后面可以加成员,但是你要打个分号
说明:如果常量对象列表后面还有其它成员,那么需要在常量对象列表后面加上 ; 进行分割
自动生成的构造器,自动就给你加了私有的
在这里插入图片描述
如果我们就想调用一下构造器怎么用?

在这里插入图片描述
没有加()的就是无参构造

2、枚举与类的不同之处(1)枚举类型不能继承其它类型,因为枚举类型有一个隐藏的父类

(1)、枚举类型不能继承其它类型,因为枚举类型有一个隐藏的父类
在这里插入图片描述
为什么枚举不能使用继承呢,因为枚举类型有一个隐藏的父类 即 java.lang.Enum
注意大小写不一样,java当中是严格区分大小写的

在这里插入图片描述
在这里插入图片描述
你看上面已经写得很清楚了。Enum是所有Java语言枚举类型的公共基本类,即枚举类型都继承它,那么既然是继承它,那么我们就要去看一看它是什么呢
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
为什么会报错是因为Enum中有一个唯一的构造器,这个构造器不是给程序员去手动调用的,是编译器自动调用的,在所有枚举类型的构造器首行,帮我们自动调用,并且自动传入 name 和 ordinal 的值
name :常量对象的名称
ordinal :常量对象的序号,其中初始常量序数为零
在这里插入图片描述
在这里插入图片描述
枚举无法重写toString()

2、枚举与类的不同之处(2)自定义枚举类型,在eclipse工具类中不能自动生成toString()方法,但是可以手动重写

在这里插入图片描述
如果手动写可以吗?可以

在这里插入图片描述
在这里插入图片描述
那么为什么eclipse 不给你自动重写呢?
因为eclipse认为,父类重写的toString方法的实现已经很完美了,就是返回常量对象名,已经能代表一切了,在实际开发中也基本上是这样,返回常量对象名基本上就可以了
枚举类型你见到的基本就是这样的,并没有其它的成员列表,但是并不代表复杂一点的项目它爱写得繁琐一些
在这里插入图片描述

2、枚举与类的不同之处(3)API中没有的方法 是编译器帮我们生成的方法

下面的 a和 b 在API中查不到,但是确实有
a、枚举类型[] values()

如果你想一口气获取所有的枚举常量对象就可以使用这个values() 方法
在这里插入图片描述
b、枚举类型 valuesof(String name)
在这里插入图片描述

三、枚举实现接口

枚举类型它既然是一种类的话,那么它能不能实现接口呢

如果能,怎么实现?
第一种:
在这里插入图片描述
第二种:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可以分开写,也可以统一写

总结

枚举是一种类,只是枚举是特殊一点的类,特殊在它的对象是有限的几个

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值