java枚举中添加抽象方法

在对抽象方法的使用时,因为只是对方法的一种定义,应用到具体的实例处理上,细节方法会不太理想。这里我们可以结合枚举的优势,以抽象方法作为外在条件,枚举作为内部方法的细化对程序进行操作。下面我们就抽象方法概念、格式简单介绍,然后结合枚举的方法为带来带来实例讲解。

1.抽象方法概念

使用abstract修饰的方法,没有方法体,只有声明。定义的是一种“规范”,就是告诉子类必须要给抽象方法提供具体的实现。

2.抽象方法格式

访问修饰符abstract返回类型方法名(参数列表)

3.枚举实现抽象方法实例

如果写抽象方法,枚举类的所有实例必须实现抽象方法。MONDAY本身就是一个AbstractWeek对象的引用。在初始化这个枚举类的时候,等同于执行的是AbstractWeek MONDAY= new AbstractWeek(0,"星期一")。然后用匿名内部类的方式实现getNextDay()。

/**
*枚举类可以有抽象方法,但是必须在它的实例中实现
*/
publicenumAbstractWeek{

MONDAY(0,"星期一"){
@Override
publicAbstractWeekgetNextDay(){
returnTUESDAY;
}
},TUESDAY(1,"星期二"){
@Override
publicAbstractWeekgetNextDay(){
returnWEDNESDAY;
}
},WEDNESDAY(2,"星期三"){
@Override
publicAbstractWeekgetNextDay(){
returnTHURSDAY;
}
},THURSDAY(3,"星期四"){
@Override
publicAbstractWeekgetNextDay(){
returnFRIDAY;
}
},FRIDAY(4,"星期五"){
@Override
publicAbstractWeekgetNextDay(){
returnSATURDAY;
}
},SATURDAY(5,"星期六"){
@Override
publicAbstractWeekgetNextDay(){
returnSUNDAY;
}
},SUNDAY(6,"星期日"){
@Override
publicAbstractWeekgetNextDay(){
returnMONDAY;
}
};

privateintnum;
privateStringdesc;

AbstractWeek(intnum,Stringdesc){
this.num=num;
this.desc=desc;
}

//一个抽象方法
publicabstractAbstractWeekgetNextDay();

publicstaticvoidmain(String[]args){
StringnextDay=AbstractWeek.MONDAY.getNextDay().toString();
System.out.println(nextDay);
}
}

编译后所有实例都会成为内部类,相当于每个实例用匿名内部类的形式实现getNextDay的方法。如:

AbstractWeekMONDAY=newAbstractWeek(){
@Override
publicAbstractWeekgetNextDay(){
returnTUESDAY;
}
};

原文来自:https://www.py.cn

© 版权声明
THE END
喜欢就支持一下吧
点赞15 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容