黑马程序员技术交流社区
标题:
java枚举类不能定义成抽象,为什么却又抽象方法呢?
[打印本页]
作者:
gzbbxu
时间:
2013-7-2 17:25
标题:
java枚举类不能定义成抽象,为什么却又抽象方法呢?
这是为什么?
package com.itcast.zhang;
public enum TrafficLamp {
// 子类的对象,每个元素都是由他的子类来写的,必须完成父类的抽象方法。
RED(30) {
@Override
public TrafficLamp nextLamp() {
// TODO Auto-generated method stub
return YELLOW;
}
},
GREEN(30) {
@Override
public TrafficLamp nextLamp() {
// TODO Auto-generated method stub
return YELLOW;
}
},
YELLOW(10) {
@Override
public TrafficLamp nextLamp() {
// TODO Auto-generated method stub
return RED;
}
};
public abstract TrafficLamp nextLamp();
private int time;// 希望每个灯都有时间
private TrafficLamp(int time) {// 通过子类来调用。
this.time = time;
}
}
// 枚举只有一个成员时,就可以作为一种单例的实现方式
复制代码
作者:
gzbbxu
时间:
2013-7-2 17:25
为什么却又有抽象方法呢?
作者:
gzbbxu
时间:
2013-7-2 17:51
抽象方法必须定义在抽象类中,而枚举类不能是抽象的?这不是矛盾的吗?
作者:
j816326
时间:
2013-7-2 18:10
首先是枚举类的定义 枚举类:一个类的对象时有限且固定的,这种实例有限且固定的类。在java里被称为枚举类。
枚举类与普通类的区别:
1.使用enum定义的枚举类默认继承了java.lang.Enum类,而不是继承Object类。其中java.lang.Enum类实现了java.lang.Serializable和java.lang.Comparable两个接口。
2.枚举类的构造器只能用private修饰
3.枚举类的所有实例必须在枚举类中显示列出,否则枚举类将永远不能产生实例,系统会自动添加public static final修饰
包含抽象方法的枚举类:
枚举类里定义抽象方法时无需显示使用abstract关键字将枚举类定义成抽象类,但因为枚举类需要显示创建枚举值,而不是作为父类,所以定义每个枚举值时必须为抽象方法提供实现,否则将出项编译错误
希望帮到你
作者:
黑马龙子
时间:
2013-7-8 19:19
因为枚举类本身就是一个抽象类,这是java本身规定的。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2