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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陈国柱 中级黑马   /  2013-9-18 14:37  /  1380 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 陈国柱 于 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.         }
复制代码

评分

参与人数 1技术分 +1 收起 理由
EYE_SEE_YOU + 1

查看全部评分

2 个回复

倒序浏览
本帖最后由 垂天云 于 2013-9-18 14:58 编辑


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


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

评分

参与人数 1技术分 +1 收起 理由
EYE_SEE_YOU + 1

查看全部评分

回复 使用道具 举报
垂天云 发表于 2013-9-18 14:46

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

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