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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王溢君 中级黑马   /  2013-3-20 02:01  /  1589 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

枚举类也是一个类,当其中定义了一个抽象的方法时,为什么不用abstract修饰呢?
  1. public enum TrafficLamp {
  2.                 RED(30){

  3.                         @Override
  4.                         public TrafficLamp nextLamp() {
  5.                                 // TODO Auto-generated method stub
  6.                                 return GREEN;
  7.                         }
  8.                        
  9.                 },
  10.                 GREEN(45){

  11.                         @Override
  12.                         public TrafficLamp nextLamp() {
  13.                                 // TODO Auto-generated method stub
  14.                                 return YELLOW;
  15.                         }},
  16.                 YELLOW(5){

  17.                         @Override
  18.                         public TrafficLamp nextLamp() {
  19.                                 // TODO Auto-generated method stub
  20.                                 return RED;
  21.                         }
  22.                                
  23.                         };
  24.                 public abstract TrafficLamp nextLamp();//抽象方法
  25.                 private int time;
  26.                 private TrafficLamp(int time){this.time = time;}
  27.                
  28.         }
复制代码
详细说明一下哈。


点评

如果问题未解决,请继续追问回复者,如果问题已经解决,请将分类改为“已解决”,谢谢  发表于 2013-3-20 19:31

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

1 个回复

倒序浏览
在张孝祥老师关于java加强的视频中,讲到过一个普通的类如何定义成枚举类
  1. public abstract class Day {
  2.        
  3.         private Day() {
  4.         }
  5. /**
  6. * 采用抽象类将大量的ifelse转换成一个个的独立的类
  7. */
  8.                 public static final Day monday = new Day(){
  9.                         @Override
  10.                         public Day nextDay() {
  11.                                 return thusday;
  12.                         }
  13.                 };
  14.                 public static final Day thusday = new Day(){
  15.                         @Override
  16.                         public Day nextDay() {
  17.                                 return null;
  18.                         }
  19.                 }
  20.         public Day getDay()
  21.         {
  22.                 if(this == monday)
  23.                 {
  24.                         return monday;
  25.                 }else
  26.                 {
  27.                         return thusday;       
  28.                 }
  29.         }
  30.         public String toString()
  31.         {
  32.                 return null;
  33.         }
  34.         public abstract Day nextDay();
  35. }
复制代码
其实枚举本质上就是一个抽象类,并且实例固定,构造函数固定,没法重新创建实例对象
建议你看下张孝祥老师关于java加强中枚举类的介绍 你就会明白了

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

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