黑马程序员技术交流社区
标题: 枚举的交通灯问题 [打印本页]
作者: 陈国柱 时间: 2013-9-18 14:37
标题: 枚举的交通灯问题
本帖最后由 陈国柱 于 2013-9-18 18:11 编辑
看了几次,还是搞不明白怎么可以这样写的,灯调用了构造方法之后,后面还可以加上一个匿名子类的代码?应该怎样理解呢?- public enum TrafficLamp{
-
- RED(30){
- public TrafficLamp nextLamp(){//匿名子类,重写父类的抽象方法
- return GREEN;
- }
- },
- GREEN(45){
- public TrafficLamp nextLamp(){
- return YELLOW;
- }
-
- },
- YELLOW(5){
- public TrafficLamp nextLamp(){
- return RED;
- }
-
- };
- public abstract TrafficLamp nextLamp();//父类的抽象方法
- private int time;
- private TrafficLamp(int time){this.time =time;}//定义构造函数
- }
复制代码
作者: 垂天云 时间: 2013-9-18 14:46
本帖最后由 垂天云 于 2013-9-18 14:58 编辑
我们定义枚举时可以定义带参数的构造方法,而要想让枚举类通过带参数的构造方法来生成实例,则必须在枚举元素提供参数。通过元素后面加括号传递数值方式来显示调用某个构造方法。枚举类中也可以有其他方法甚至是抽象方法,如果有抽象方法,那么在定义枚举元素时必须实现该抽象方法,通常采用该元素对象的匿名子类实现抽象方法。
关于枚举类的总结:希望可以帮到你。
1、匿名内部类比较常用
2、类的方法返回的类型可以是类的类型
3、类中可定义静态常量,常量的结果就是自己这个类型的实例对象
4、如果枚举只有一个成员,就可以作为一种单例的实现方式,对象只有一个。
作者: 陈国柱 时间: 2013-9-18 18:10
谢谢!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |