Java枚举抽象方法实例解析

网友投稿 419 2022-12-16


Java枚举抽象方法实例解析

这篇文章主要介绍了java枚举抽象方法实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

需求背景

需求已经确定了几个固定的常量值,并且每个常量值都有相同的行为,但是具体实现细节不同。建议使用枚举抽象方法,优点:结构清晰,便于扩展。

枚举类实现抽象方法

与常规抽象类一样,enum类允许我们为其定义抽象方法,然后使每个枚举实例都实现该方法,以便产生不同的行为方式,注意abstract关键字对于枚举类来说并不是必须的,举个栗子:

public enum GradeEnum {

//考试分数划分为A、B、C、D和E 五个等级

A("90~100") {

@Override

public String getGrade(String studentName) {

return studentName + "优秀";

}

}, B("80~89") {

@Override

public String getGrade(String studentName) {

return studentName + "良好";

}

}, C("70~79") {

@Override

public String getGrade(String studentName) {

return studentName + "中等" + getScore();

}

}, D("60~69") {

@Override

public StBVKrVmAring getGrade(String studentName) {

return studentName + "及格";

}

}, E("0~59") {

@Override

public String getGrade(String studentName) {

return studentName + "成绩很差";

}

};

private String score;

private GradeEnum(String score) {

this.score = score;

}

public String getScore() {

return this.score;

}

public abstract String getGrade(String studentName);

}

定义GradeEnum的时候,并未添加abstract关键字。

可以把 enum 类看成是一个普通的类,枚举类都可以定义一些属性和方法,不同之处是:enum 不能使用 extends 关键字继承其他类,因为 enum 已经继承了 java.lang.Enum(java是单一继承)。

成员方法可以直接操作成员变量,比如score,并且得到返回结果,静态方法是遍历各个实例使用其成员变量计算得到返回结果,方法过程都是根据成员属性进行计算。

如果我们想让各个实例拥有完全不一样的方法实现,不依赖于成员变量,那么,需要定义抽象方法,实例使用{...}匿名块,在匿名块中实现抽象。如上述例子http://中的抽象方法getGrade。也可以通过枚举类实现接口来达到相同的目的。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java枚举类接口实例原理解析
下一篇:Spring Cloud Hystrix异常处理方法详解
相关文章

 发表评论

暂时没有评论,来抢沙发吧~