在日常开发中,会经常遇到特定的值,比如1代表某个状态,我们一般会用static写死在程序中。
其实我们可以使用枚举进行实现
枚举大概有哪些结构:
public enum Shop {
Apple(3), Banan(4), Watermelon(5);
private int price;
Shop(int price) {
this.price = price;
}
@Override
public String toString() {
return String.valueOf(price);
}
public static void main(String[] args) {
/*for(Shop shop:Shop.values()){
System.out.println(shop);
}*/
System.out.println(Shop.Apple);
}
}
有一些自己定义的内容,比如购物里面有苹果,banan,西瓜,里面的代表价格
这时它需要一个构造器,这个构造器和你定义的类型有关系。
有时需要复写tostring函数,让它显示食物的价格,如果没有复写toString函数的时候,会输出Apple...这些
接下来实现一个加班费计算
一般来说加班费可以是按工作日加班还有周末加班两类分别按照不同的算法来计算加班费。
在第一层Wage中定义星期,在子类Rule定义两种计算的规则。
public enum Wage {
Monday(Rule.WorkingDay),
Saturday(Rule.Weekend);
Wage(Rule weekend) {
this.weekend=weekend;
}
private final Rule weekend;
double pay(double payMoney){
return weekend.pay(payMoney);
}
public enum Rule {
WorkingDay {
@Override
double pay(double payMoney) {
return payMoney*1;
}
},
Weekend {
@Override
double pay(double payMoney) {
return payMoney*2;
}
};
abstract double pay(double payMoney);
}
public static void main(String[] args) {
System.out.println(Wage.Monday.pay(100));
System.out.println(Wage.Saturday.pay(100));
}
}