package org.lgy.study.enumstudy;
public enum Operation{
PLUS,MINUS,MULTI,DIVIDE;
public double eval(double a, double b){
switch(this)
{
case PLUS:
return a + b;
//因为前面有return语句,所以后面的break语句永远不会被执行
//break;
case MINUS:
return a - b;
//break;
case MULTI:
return a * b;
//break;
case DIVIDE:
return a / b;
//break;
//从java语法的角度来看,因为该方法有返回值,所以default语句是必须的
//但从实际的语义来看,因为this代表的是枚举类的实例,而枚举类的实例是固定的,
//所以default语句是完全多余的
default:
return 0.0;
//break;
}
}
public static void main(String[] args){
for(Operation o : Operation.values()){
System.out.println(o.eval(1, 2));
}
}
}
package org.lgy.study.enumstudy;
/*
枚举类里定义抽象方法时不能使用abstract关键字将枚举类定义成抽象类(因为系统自动会为它添加abstract关键字),但因为枚举类需要显式创建枚举值,而不是作为父类,所以定义每个枚举值时必须为抽象方法提供实现,否则将出现编译错误。
*/
public enum Operation{
PLUS
{
public double eval(double a, double b){
return a + b;
}
},
MINUS
{
public double eval(double a, double b){
return a - b;
}
},
MULTI
{
public double eval(double a, double b){
return a * b;
}
},
DIVIDE
{
public double eval(double a, double b){
return a / b;
}
};
//为枚举类定义一个抽象方法
//这个抽象方法由不同的枚举值提供实现
public abstract double eval(double a, double b);
public static void main(String[] args){
for(Operation o : Operation.values()){
System.out.println(o.eval(1, 2));
}
}
}
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。