广州北大青鸟计算机职业培训学校
互联网技术培训、软件技术培训、大数据培训、云计算培训、数据分析培训信息网
当前位置:网站首页 > 软件教程 > Java技术 > 正文

惠州Java枚举的特性是什么?_北大青鸟IT计算机学校

作者:邓华发布时间:2021-03-29分类:Java技术浏览:991


导读:相信大家在学习Java的过程在会遇到各种各样的问题,例如:Java枚举的特性是什么?那么下面我们一起来看看惠州北大青鸟学术部老师是怎么讲解这道题的。

相信大家在学习Java的过程在会遇到各种各样的问题,例如:Java枚举的特性是什么?那么下面我们一起来看看惠州北大青鸟学术部老师是怎么讲解这道题的。

枚举的特性,归结起来就是一句话:

除了不能继承,基本上可以将 enum 看做一个常规的类。

但是这句话需要拆分去理解,让我们细细道来。

1、枚举可以添加方法

在概念章节提到了,枚举值默认为从 0 开始的有序数值 。那么问题来了:如何为枚举显示的赋值。

Java 不允许使用 = 为枚举常量赋值

如果你接触过 C/C++,你肯定会很自然的想到赋值符号 = 。在 C/C++ 语言中的 enum,可以用赋值符号 = 显示的为枚举常量赋值;但是 ,很遗憾,Java 语法中却不允许使用赋值符号 = 为枚举常量赋值。

例:C/C++ 语言中的枚举声明

typedef enum{
    ONE = 1,
    TWO,
    THREE = 3,
    TEN = 10} Number;

枚举可以添加普通方法、静态方法、抽象方法、构造方法

Java 虽然不能直接为实例赋值,但是它有更优秀的解决方案:为 enum 添加方法来间接实现显示赋值。

创建 enum 时,可以为其添加多种方法,甚至可以为其添加构造方法。

注意一个细节:如果要为 enum 定义方法,那么必须在 enum 的最后一个实例尾部添加一个分号。此外,在 enum 中,必须先定义实例,不能将字段或方法定义在实例前面。否则,编译器会报错。

例:全面展示如何在枚举中定义普通方法、静态方法、抽象方法、构造方法

public enum ErrorCode {
   OK(0) {        public String getDescription() {            return "成功";
       }
   },
   ERROR_A(100) {        public String getDescription() {            return "错误A";
       }
   },
   ERROR_B(200) {        public String getDescription() {            return "错误B";
       }
   };    private int code;    // 构造方法:enum的构造方法只能被声明为private权限或不声明权限
   private ErrorCode(int number) { // 构造方法
       this.code = number;
   }    public int getCode() { // 普通方法
       return code;
   } // 普通方法
   public abstract String getDescription(); // 抽象方法
   public static void main(String args[]) { // 静态方法
       for (ErrorCode s : ErrorCode.values()) {
           System.out.println("code: " + s.getCode() + ", description: " + s.getDescription());
       }
   }
}

注:上面的例子并不可取,仅仅是为了展示枚举支持定义各种方法。下面是一个简化的例子

例:一个错误码枚举类型的定义

本例和上例的执行结果完全相同。

public enum ErrorCodeEn {
   OK(0, "成功"),
   ERROR_A(100, "错误A"),
   ERROR_B(200, "错误B");

   ErrorCodeEn(int number, String description) {        this.code = number;        this.description = description;
   }    private int code;    private String description;    public int getCode() {        return code;
   }    public String getDescription() {        return description;
   }    public static void main(String args[]) { // 静态方法
       for (ErrorCodeEn s : ErrorCodeEn.values()) {
           System.out.println("code: " + s.getCode() + ", description: " + s.getDescription());
       }
   }
}

2、枚举不可以继承

enum 不可以继承另外一个类,当然,也不能继承另一个 enum 。

因为 enum 实际上都继承自 java.lang.Enum 类,而 Java 不支持多重继承,所以 enum 不能再继承其他类,当然也不能继承另一个 enum。

3、枚举可以实现接口

enum 可以像一般类一样实现接口。

同样是实现上一节中的错误码枚举类,通过实现接口,可以约束它的方法。

public interface INumberEnum {    int getCode();    String getDescription();
}public enum ErrorCodeEn2 implements INumberEnum {
   OK(0, "成功"),
   ERROR_A(100, "错误A"),
   ERROR_B(200, "错误B");

   ErrorCodeEn2(int number, String description) {        this.code = number;        this.description = description;
   }    private int code;    private String description;    @Override
   public int getCode() {        return code;
   }    @Override
   public String getDescription() {        return description;
   }
}

想知道更多关于Java的资讯,联系在线客服,或者来惠州北大青鸟新方舟校区了解了解。

Java12.jpg

Java

标签:惠州计算机JAVA软件开发惠州计算机Java软件开发惠州计算机JAVA培训惠州计算机JAVA软件开发学校惠州计算机Java软件开发培训JAVAJava软件开发北大青鸟IT计算机学校北大青鸟IT软件学校北大青鸟IT学校


Java技术排行
标签列表
网站分类
文章归档
最近发表