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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

前段时间没事儿练习小程序,参考别人代码时,发现了枚举类的一个问题:

枚举的代码是:
        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呢?很奇怪~

评分

参与人数 1技术分 +1 收起 理由
袁錦泰 + 1

查看全部评分

4 个回复

正序浏览
枚举类有自己的特性:不能被继承,前面不能被abstract修饰,这是枚举不同于一般类的特别之处;
回复 使用道具 举报
沙发正解啊~
回复 使用道具 举报
楼主,eDemo就是一个抽象类,而里面的
              RED{
                        public eDemo next(){
                                return GREEN;
                        }
是其实例对象,这个相当于   eDemo RED = new eDemo(){
                        public eDemo next(){
                                return GREEN;
                        }
这种写法是用普通的类来模拟枚举的写法。
你理解的没错eDemo是抽象类,所以它没有声明为public class 而声明的public enum

评分

参与人数 1技术分 +1 收起 理由
袁錦泰 + 1

查看全部评分

回复 使用道具 举报
public abstract class Enum<E extends Enum<E>>extends Objectimplements Comparable<E>, Serializable这是所有 Java 语言枚举类型的公共基本类。

还用说什么么?

评分

参与人数 1技术分 +1 收起 理由
袁錦泰 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马