黑马程序员技术交流社区

标题: 枚举的交通灯问题 [打印本页]

作者: 陈国柱    时间: 2013-9-18 14:37
标题: 枚举的交通灯问题
本帖最后由 陈国柱 于 2013-9-18 18:11 编辑

看了几次,还是搞不明白怎么可以这样写的,灯调用了构造方法之后,后面还可以加上一个匿名子类的代码?应该怎样理解呢?
  1. public enum TrafficLamp{
  2.                
  3.                 RED(30){
  4.                         public TrafficLamp  nextLamp(){//匿名子类,重写父类的抽象方法
  5.                                 return GREEN;
  6.                         }
  7.                 },
  8.                 GREEN(45){
  9.                         public TrafficLamp  nextLamp(){
  10.                                 return YELLOW;
  11.                         }
  12.                         
  13.                 },
  14.                 YELLOW(5){
  15.                         public TrafficLamp  nextLamp(){
  16.                                 return RED;
  17.                         }
  18.                         
  19.                 };
  20.                 public abstract TrafficLamp  nextLamp();//父类的抽象方法
  21.                 private int time;
  22.                 private TrafficLamp(int time){this.time =time;}//定义构造函数
  23.         }
复制代码

作者: 垂天云    时间: 2013-9-18 14:46
本帖最后由 垂天云 于 2013-9-18 14:58 编辑


我们定义枚举时可以定义带参数的构造方法,而要想让枚举类通过带参数的构造方法来生成实例,则必须在枚举元素提供参数。通过元素后面加括号传递数值方式来显示调用某个构造方法。枚举类中也可以有其他方法甚至是抽象方法,如果有抽象方法,那么在定义枚举元素时必须实现该抽象方法,通常采用该元素对象的匿名子类实现抽象方法。


关于枚举类的总结:希望可以帮到你。
1、匿名内部类比较常用
2、类的方法返回的类型可以是类的类型
3、类中可定义静态常量,常量的结果就是自己这个类型的实例对象
4、如果枚举只有一个成员,就可以作为一种单例的实现方式,对象只有一个。


作者: 陈国柱    时间: 2013-9-18 18:10
垂天云 发表于 2013-9-18 14:46

我们定义枚举时可以定义带参数的构造方法,而要想让枚举类通过带参数的构造方法来生成实例, ...

谢谢!





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