黑马程序员技术交流社区

标题: 关于枚举的问题,百思不得其解,求解答 [打印本页]

作者: 李春阳    时间: 2012-6-5 16:15
标题: 关于枚举的问题,百思不得其解,求解答
前段时间没事儿练习小程序,参考别人代码时,发现了枚举类的一个问题:

枚举的代码是:
        public enum eDemo {
                RED{
                        public eDemo next(){
                                return GREEN;
                        }
                        
                },GREEN{
                        public eDemo next(){
                                return YELLOW;
                        }
                },YELLOW{
                        public eDemo next(){
                                return RED;
                        }
                };
                public abstract eDemo next();  //抽象方法
        }
我记得不应该是类里面方法是抽象的话,类也应该为抽象类吗?
为什么这里类没有加abstract呢?很奇怪~
作者: 郭宁    时间: 2012-6-5 16:35
public abstract class Enum<E extends Enum<E>>extends Objectimplements Comparable<E>, Serializable这是所有 Java 语言枚举类型的公共基本类。

还用说什么么?
作者: 闾丘日月    时间: 2012-6-5 17:14
楼主,eDemo就是一个抽象类,而里面的
              RED{
                        public eDemo next(){
                                return GREEN;
                        }
是其实例对象,这个相当于   eDemo RED = new eDemo(){
                        public eDemo next(){
                                return GREEN;
                        }
这种写法是用普通的类来模拟枚举的写法。
你理解的没错eDemo是抽象类,所以它没有声明为public class 而声明的public enum
作者: 伊文龙    时间: 2012-6-5 17:20
沙发正解啊~
作者: 胡团乐    时间: 2012-6-5 19:13
枚举类有自己的特性:不能被继承,前面不能被abstract修饰,这是枚举不同于一般类的特别之处;




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