
在对抽象方法的使用时,因为只是对方法的一种定义,应用到具体的实例处理上,细节方法会不太理想。这里我们可以结合枚举的优势,以抽象方法作为外在条件,枚举作为内部方法的细化对程序进行操作。下面我们就抽象方法概念、格式简单介绍,然后结合枚举的方法为带来带来实例讲解。
1.抽象方法概念
使用abstract修饰的方法,没有方法体,只有声明。定义的是一种“规范”,就是告诉子类必须要给抽象方法提供具体的实现。
2.抽象方法格式
1 | 访问修饰符 abstract 返回类型 方法名 (参数列表)
|
3.枚举实现抽象方法实例
如果写抽象方法,枚举类的所有实例必须实现抽象方法。MONDAY本身就是一个AbstractWeek对象的引用。在初始化这个枚举类的时候,等同于执行的是AbstractWeek MONDAY= new AbstractWeek(0,"星期一")。然后用匿名内部类的方式实现getNextDay()。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
public enum AbstractWeek {
MONDAY(0, "星期一" ) {
@Override
public AbstractWeek getNextDay() {
return TUESDAY;
}
}, TUESDAY(1, "星期二" ) {
@Override
public AbstractWeek getNextDay() {
return WEDNESDAY;
}
}, WEDNESDAY(2, "星期三" ) {
@Override
public AbstractWeek getNextDay() {
return THURSDAY;
}
}, THURSDAY(3, "星期四" ) {
@Override
public AbstractWeek getNextDay() {
return FRIDAY;
}
}, FRIDAY(4, "星期五" ) {
@Override
public AbstractWeek getNextDay() {
return SATURDAY;
}
}, SATURDAY(5, "星期六" ) {
@Override
public AbstractWeek getNextDay() {
return SUNDAY;
}
}, SUNDAY(6, "星期日" ) {
@Override
public AbstractWeek getNextDay() {
return MONDAY;
}
};
private int num;
private String desc;
AbstractWeek(int num,String desc) {
this .num = num;
this .desc=desc;
}
public abstract AbstractWeek getNextDay();
public static void main(String[] args) {
String nextDay=AbstractWeek.MONDAY.getNextDay().toString();
System.out.println(nextDay);
}
}
|
编译后所有实例都会成为内部类,相当于每个实例用匿名内部类的形式实现getNextDay的方法。如:
1 2 3 4 5 6 | AbstractWeek MONDAY= new AbstractWeek (){
@Override
public AbstractWeek getNextDay() {
return TUESDAY;
}
};
|
以上就是在java枚举中添加抽象方法的使用,这里我们结合了两者的优势,对程序实例完成最终的处理。如果对抽象方法使用有一定要求的,可以结合枚举来解决。