初识Eunm枚举

在日常开发中,会经常遇到特定的值,比如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));
    }

    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值