黑马程序员技术交流社区

标题: 关于枚举的疑惑 [打印本页]

作者: jialihong    时间: 2013-7-29 13:05
标题: 关于枚举的疑惑
本帖最后由 杜光 于 2013-7-30 10:34 编辑

枚举的构造方法必须是私有的,是一种规定,还是有说法的,希望各位帮忙解释一下?

作者: 王磊    时间: 2013-7-29 13:22
枚举类个人认为是一种思想上的规则,形容的是某一类事物,只有具体的几个元素,就比如说星期。一个星期只有周一~周日这7个可操作的元素,不会有人说星期八是几号。
如果将这种思想通过JAVA来体现的话,那么就等于创建的这个星期类不能去自己创建个星期八的对象,而我们能操作的只是它类中的周一~周日。既然不能自由创建,那么就只有将构造函数private。而在JAVA中对于这种类,就并不是用class定义,而是将这样的类用enum标示出来。也就是说构造函数私有化是枚举类中的一种规定。
我在学枚举的时候是把它看成了一个类似于单例设计模式来理解的。只是单例是我们主动去操作,而枚举则是JAVA内部规则定义。

个人理解,希望可以帮到楼主。
作者: toShareBeauty    时间: 2013-7-29 15:45
本帖最后由 toShareBeauty 于 2013-7-29 18:09 编辑
王磊 发表于 2013-7-29 13:22
枚举类个人认为是一种思想上的规则,形容的是某一类事物,只有具体的几个元素,就比如说星期。一个星期只有 ...

楼上说得很好,我补充一下:
枚举是一种特殊的类,是一种在类定义的时候我们就已经明确了该类的所有对象的信息和限制的类。在类定义的时候就知道所有对象的名字和个数,所以在l类定义的是就创建好了对象。并且以后不让再创建该类的对象。这种类我们完全可以用普通 class 来定义,但是为了简洁、清晰、明了,我们专门设计了一种关键字 enum 来定义这种类,因为很多信息已经固定,所以定义的语法上删掉了很多不必要的信息,枚举是这种类的一种特定的语法表达形式。具体删掉了哪些信息你可以看我的博客 http://blog.csdn.net/zhaoyw2008/article/details/9377353 里面有总结。

作者: 诸隆隆    时间: 2013-7-30 00:52
..楼上两个大神说的太详细了。我就简单的再简单的解释一下,构造方法说白了就是创建类的时候可以按照自己的意愿设置初始化,而枚举枚举,说白了就是引入一种规则,让你定义的时候只能按照规则办事儿。自然而然,如果它的构造方法公开的话,你不就可以new了,你可以new了,枚举还有啥规则限制你。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2