package com.se;
public enum Operation {
/**
* 枚举类对象(PLUS...) 相当于当前类的一个final 实例
*/
// PLUS,MINUS,TIMES,DIVIDE;
//
// Double apply(double x,double y){
// switch(this){
// case PLUS:return x+y;
// case MINUS:return x-y;
// case TIMES:return x*y;
// case DIVIDE:return x/y;
// default:return null;
// }
// }
PLUS("+"){
@Override
Double apply(Double x, Double y) {
// TODO Auto-generated method stub
return x+y;
}
},
MINUS("-"){
@Override
Double apply(Double x,Double y){
return x-y;
}
},
TIMES("*") {
@Override
Double apply(Double x, Double y) {
// TODO Auto-generated method stub
return x*y;
}
},
DIVIDE("/") {
@Override
Double apply(Double x, Double y) {
// TODO Auto-generated method stub
return x/y;
}
}
;
/**
* 把枚举类和行为联系在一起
*/
private String symbol; //不需要申明为final
Operation(){} //默认构造器
Operation(String symbol){
this.symbol=symbol;
}
abstract Double apply(Double x,Double y); //抽象方法
public static void main (String[] args){
/**
* 特定于常量方法的实现,抽象方法
*/
for(Operation oper:Operation.values()){
System.out.println(oper.apply(4.00, 2.0));
}
}
}