黑马程序员技术交流社区
标题:
求解 最好详细点
[打印本页]
作者:
潜伏
时间:
2013-12-9 11:47
标题:
求解 最好详细点
package com.baidu.day1;
//带有抽象方法的枚举
public class EnumDemo {
public static void main(String[] args){
System.out.println(TrafficLamp.RED.nextLamp());
}
public enum TrafficLamp{
RED{
public TrafficLamp nextLamp()
{
return YELLOW;
}
},
YELLOW{
public TrafficLamp nextLamp()
{
return GREEN;
}
},
GREEN{//此RED到底是TrafficLamp对象还是其子类对象
public TrafficLamp nextLamp()
{
return RED;
}
};
public abstract TrafficLamp nextLamp();//为什么此类不是抽象的?????抽象成员必须是抽象方法嘛
}
}
作者:
hel
时间:
2013-12-9 13:25
RED YELLOW GREEN 是这个枚举类的对象,对象要使用匿名内部类,就必须要有抽象方法或接口
作者:
想你的夜
时间:
2013-12-9 13:48
第一个问题: RED是枚举类TrafficLamp的一个实例对象,而不是你说的什么子类对象:
第二个问题:当一个方法为抽象方法时,意味着这个方法必须被子类的方法所重写,此处的抽象方法 public abstract TrafficLamp nextLamp();的定义是为了在RED的创建匿名内部类的时候重写该抽象方法,从而实现具体的功能!
作者:
Cheers_for_CRAZ
时间:
2013-12-9 14:48
以下是我对枚举的理解:
首先,枚举是一个特殊的类,当一些元素都具有共有属性时,这时候可以用枚举将其封装,这样就避免定义很多类。
其次,枚举里面的每一个元素都代表一个对象。它们可以有自己的属性。
由于在枚举中定义了一个抽象方法,那么就可以认为这个抽象方法是每一个元素(对象)都具有的。
那么就需要每一个对象都实现这个抽象方法,当然了,里面可以定义各自不同的功能。
作者:
冯晓骏
时间:
2013-12-10 22:00
想你的夜 发表于 2013-12-9 13:48
第一个问题: RED是枚举类TrafficLamp的一个实例对象,而不是你说的什么子类对象:
第二个问题:当一个方法 ...
TrafficLamp应该就是子类对象,父类是带有抽象方法的抽象类,有三个子类,但是都是匿名内部类,RED、YELLOW、GREEN为这些匿名子类的实例对象,你觉得呢
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2