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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黄晶 中级黑马   /  2012-12-9 19:04  /  1229 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 黄晶 于 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:}


2 个回复

正序浏览
赵保磊 发表于 2012-12-9 20:14
enum是定义枚举的关键字,例如:

enum Person

:handshake..嗯....原来这样......
枚举里的变量本身就是枚举类型
在枚举里面定义的abstract方法.那么子类必须实现抽象方法,
那RED,YELLOW和GREEN后的{...}就是匿名内部类了.....soga!!!
:)
谢谢了.................
回复 使用道具 举报
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();//只能用本类提供的这三个对象
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马