A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© _code 中级黑马   /  2014-10-1 14:32  /  846 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

新手求教 !!!!!

2 个回复

倒序浏览
枚举创建出来就是单例   而普通类不一定
回复 使用道具 举报
一、概念
在某些情况下,一个类的对象是有限而且固定的,例如季节类,它只有四个对象,这种实例有限而且固定的类,在Java里被称为枚举类。

手动实现枚举类:

1.通过private将构造器隐藏起来。

2.把这个类的所有可能实例都使用public static final属性来保存。

3.如果有必要,可以提供一些静态方法,允许通过特定参数来获取与之匹配的实例。

二、区别

手动定义枚举类是比较麻烦的,我们可以使用关键字enum来定义枚举类,枚举类与普通类的区别:

1.使用enum定义的枚举类默认继承了java.lang.Enum类,而不是继承Object类。java.lang.Enum类实现了java.lang.Serialiable和java.lang.Comparable两个接口。

2.枚举类的构造器只能使用private修饰,即使省略也默认是private的。

3.枚举类实例只能显示给出,否则永远不能产生实例,列出这些实例时,系统会自动添加public static final修饰,无需程序员显示添加。

4.所有枚举类都提供了一个values方法,用于可以很方便地遍历所有枚举值。

四、实现接口的枚举类

其实枚举类实现接口和普通类没多少区别,也是使用implements关键字,可以实现一个或多个接口。但是需要注意的是,如果像普通类一样实现接口后直接重写接口里的方法的话,那么枚举类的所有实例就拥有一样的接口实现了,这样就失去了意义和灵活性,所以往往会为每个实例提供不同的方法实现

五、包含抽象方法的枚举类,枚举类中对普通方法的使用和普通类一样,其实抽象方法跟实现接口是一个道理
枚举类需要显示创建枚举值,并为抽象方法提供实现,否则会出现编译错误。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马