黑马程序员技术交流社区
标题:
如何实现带抽象方法的枚举
[打印本页]
作者:
阳春烟景
时间:
2014-4-2 23:01
标题:
如何实现带抽象方法的枚举
如何实现带抽象方法的枚举,
表示下面的代码没看懂
public enum TrafficLamp{
Red(30){//red是一个元素,它是由trafficLamp子类来实现的
public TrafficLamp nextLamp(){
return Green;
}
},
Green(45){
public TrafficLamp nextLamp(){
return Yellow;
}
},
Yellow(5){
public TrafficLamp nextLamp(){
return Green;
}
};
public abstract TrafficLamp nextLamp();
private int time;
private TrafficLamp(int time){
this.time=time;
}
}
复制代码
作者:
ehuashao
时间:
2014-4-2 23:12
把枚举里面的每一个枚举常量,当做一个对象来看待。枚举体里有抽象方法,理解我为一个对象继承了一个抽象类,那它就要实现自己的抽象方法。
public abstract class TrafficLampABS {
public abstract String nextLamp();
}
class Red extends TrafficLampABS{
@Override
public String nextLamp() {
// TODO Auto-generated method stub
return "Green";
}
}
复制代码
这样理解,应该清楚了吧。
作者:
syusikoku
时间:
2014-4-3 15:18
如果一个类中有抽象方法那么这个类也必须要做成抽象的。抽象类不能直接new他的实例。我们只能new它的子类对象。在new它的子类对象的时候。必须要去实现里面的抽象方法。
作者:
╰青青子佩ˊゝ
时间:
2014-4-3 20:47
两个地方希望能帮到你,如下代码所示。
public enum TrafficLamp{
Red(30){//red是一个元素,它是由trafficLamp子类来实现的
//1.你上面这句话有问题,Red其实就是TrafficLamp的一个实例对象。
public TrafficLamp nextLamp(){
return Green;
}
},
Green(45){
public TrafficLamp nextLamp(){
return Yellow;
}
},
Yellow(5){
public TrafficLamp nextLamp(){
return Green;
}
};
//2.这里定义了抽象方法nextLamp(),每个元素(即每个实例对象)中就必须复写这个抽象方法咯
public abstract TrafficLamp nextLamp();
private int time;
private TrafficLamp(int time){
this.time=time;
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2