黑马程序员技术交流社区

标题: 枚举类型的问题 [打印本页]

作者: 黄晶    时间: 2012-12-9 19:04
标题: 枚举类型的问题
本帖最后由 黄晶 于 2012-12-10 13:23 编辑

看枚举类型的知识点时,有点弄糊涂了,enum关键字可以类比于class.相当于定义了一个类.
里面定义的变量自定义后就固定.引用时可以用枚举名直接访问变量,类似于类引用全局变量.
下面这段代码里有个abstract方法.我就想既然里面有abstract方法,那么enum前面应该有abstract.
这个想法印证是错的....

我有点疑惑的是...

RED.GREEN和YELLOW后面大括号里的代码是嘛意思..????
RED.GREEN还有YELLOW这三个变量看做是什么类型的好理解一点.....

abstract enum TrafficLight //abstract错误
{
         RED(30)
         {
                 public TrafficLight nextLight()
                 {
                         return GREEN;
                 }
         },
         YELLOW(5)
         {
                 public TrafficLight nextLight()
                 {
                         return RED;
                 }
         },
         GREEN(45)
         {
                 public TrafficLight nextLight()
                 {
                         return YELLOW;
                 }
         };

         public abstract TrafficLight nextLight();//神马抽象方法,有么用???
         private int time;

         private TrafficLight(int time)//还有构造函数....!!!
         {
                 this.time = time;
         }
         
         public String toString()
         {
                 return this.name()+ " " + time + "s";
         }
}


哪位童鞋明白的,帮我解析一下吧.............{:soso_e199:}



作者: 赵保磊    时间: 2012-12-9 20:14
enum是定义枚举的关键字,例如:

enum Person
{
    p1,p2,p3;
//对类Person类的对象进行了限制,只能用P1,p2,p3作为Person类的对象,不能再重新new对象了。调用的时候则是Person aa=Person.p1;
}
原理:
class Person
{
   private Person(){};
   public static Person p1=new Person();
   Public Static Person p2=new Person();
   Public Static Person p3=new Person();//只能用本类提供的这三个对象
}
作者: 黄晶    时间: 2012-12-9 20:31
赵保磊 发表于 2012-12-9 20:14
enum是定义枚举的关键字,例如:

enum Person

:handshake..嗯....原来这样......
枚举里的变量本身就是枚举类型
在枚举里面定义的abstract方法.那么子类必须实现抽象方法,
那RED,YELLOW和GREEN后的{...}就是匿名内部类了.....soga!!!
:)
谢谢了.................




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