包含抽象方法的枚举类

方法一

public enum Operation {
    plus,minus,times,divide;
    double  eval (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 0;
            //此部分代码其实没有必要。因为this代表的枚举类只有四个枚举值。
            //但是如果不加上的话,会编译报错。
                }
    }
     String describ (){
         return "i am a  "+this+" method";
     }

    public static void main(String[] args) {
        System.out.println(Operation.plus.eval(3,4));
        //理解为枚举值的方法。而不是枚举类方法。
        System.out.println(Operation.minus.describ());
    }
}
方法二
public enum Operation2 {
    plus{
        public double eval(double x,double y){
            return x+y;
        }
    },//这个抽象方法在下面有声明。写法可以参照匿名内部类
    minus{
        public double eval(double x,double y){
            return x-y;
        }
    },
    times{
        public double eval(double x,double y){
            return x*y;
        }
    },
    divide{
        public double eval(double x,double y){
            return x/y;
        }
    };
    abstract double eval(double x,double y);

    public static void main(String[] args) {
        System.out.println(Operation2.plus.eval(3,4));

    }
}
方法二写法可以参考匿名内部类的写法,

另外注意的是并不是所有的枚举类都使用了final修饰符,从而导致其不能派生子类。只有非抽象的枚举类才是用final修饰,

而对于抽象的枚举类而言,其只要包含了抽象方法,其就是抽象枚举类,系统会默认使用abstract 修饰,而不会用final

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值