前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >带抽象方法的枚举

带抽象方法的枚举

原创
作者头像
MonroeCode
发布2018-01-11 12:10:21
8390
发布2018-01-11 12:10:21
举报
文章被收录于专栏:Java技术分享
代码语言:js
复制
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));  
        }  
    }  
}  

代码语言:js
复制
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 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档