Java枚举抽象方法实例解析
这篇文章主要介绍了Java枚举抽象方法实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
需求背景
需求已经确定了几个固定的常量值,并且每个常量值都有相同的行为,但是具体实现细节不同。建议使用枚举抽象方法,优点:结构清晰,便于扩展。
枚举类实现抽象方法
与常规抽象类一样,enum类允许我们为其定义抽象方法,然后使每个枚举实例都实现该方法,以便产生不同的行为方式,注意abstract关键字对于枚举类来说并不是必须的,举个栗子:
publicenumGradeEnum{ //考试分数划分为A、B、C、D和E五个等级 A("90~100"){ @Override publicStringgetGrade(StringstudentName){ returnstudentName+"优秀"; } },B("80~89"){ @Override publicStringgetGrade(StringstudentName){ returnstudentName+"良好"; } },C("70~79"){ @Override publicStringgetGrade(StringstudentName){ returnstudentName+"中等"+getScore(); } },D("60~69"){ @Override publicStringgetGrade(StringstudentName){ returnstudentName+"及格"; } },E("0~59"){ @Override publicStringgetGrade(StringstudentName){ returnstudentName+"成绩很差"; } }; privateStringscore; privateGradeEnum(Stringscore){ this.score=score; } publicStringgetScore(){ returnthis.score; } publicabstractStringgetGrade(StringstudentName); }
定义GradeEnum的时候,并未添加abstract关键字。
可以把enum类看成是一个普通的类,枚举类都可以定义一些属性和方法,不同之处是:enum不能使用extends关键字继承其他类,因为enum已经继承了java.lang.Enum(java是单一继承)。
成员方法可以直接操作成员变量,比如score,并且得到返回结果,静态方法是遍历各个实例使用其成员变量计算得到返回结果,方法过程都是根据成员属性进行计算。
如果我们想让各个实例拥有完全不一样的方法实现,不依赖于成员变量,那么,需要定义抽象方法,实例使用{...}匿名块,在匿名块中实现抽象。如上述例子中的抽象方法getGrade。也可以通过枚举类实现接口来达到相同的目的。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。