美文网首页
枚举类和类的异同

枚举类和类的异同

作者: FoxLayla | 来源:发表于2019-02-24 15:54 被阅读11次

枚举类和类的异同

相同之处

  • 枚举类也是类,同样具有成员变量、成员方法、构造器

    public enum Week {
          SUNDAY("星期日"), MONDAY("星期一"), TUESDAY("星期二"), WEDNESDAY("星期三"), THURSDAY("星期四"), FRIDAY("星期五"), SATURDAY("星期六");
        
        // 成员变量
        private String day;
        
        // 构造器
        Week(String day) {
            this.day = day;
        }
        
        // 成员方法
        @Override
        public String toString(){
            return day;
        }
    }
    
  • 枚举类可以实现接口

    public enum Week implements Workable {
      ...
    }
    

不同之处

  • 枚举类的所有实例(枚举值)必须在枚举类的第一行显式地列出,否则这个枚举类将永远不能产生实例。所有的枚举值都是 public static final 的,列出这些枚举值时,系统会自动添加 public static final 修饰,无需程序员显式添加。

    public enum Week {
          // 枚举值
          SUNDAY("星期日"), MONDAY("星期一"), TUESDAY("星期二"), WEDNESDAY("星期三"), THURSDAY("星期四"), FRIDAY("星期五"), SATURDAY("星期六");
        
       ...
    }
    
  • 构造器只能使用 private 访问修饰符(且默认为 private),所以无法从外部调用构造器,构造器只在构造枚举值时被调用。这样做可以保证数据的安全性,使枚举值一定是由内部定义的,拒绝外部传入。

    public enum Week {
          SUNDAY("星期日"), MONDAY("星期一"), TUESDAY("星期二"), WEDNESDAY("星期三"), THURSDAY("星期四"), FRIDAY("星期五"), SATURDAY("星期六");
        
        private String day;
        
          // 默认访问权限为private的构造器
        Week(String day) {
            this.day = day;
        }
    }
    
  • 枚举类不能再派生子类,也不能再继承其他父类

    因为枚举类编译后生成一个 class 并且继承 Enum 类,反编译可以看到:

    // final关键字限定枚举类不能派生子类,extends意味着枚举类已经继承了Enum类,因而不能继承其他父类
    final class Week extends Enum {
      ...
    }
    
  • 枚举类自动拥有 values(用于获得包含全部枚举类实例的数组) 和 valueOf (返回指定的枚举类实例)方法

    Week sunday = Week.valueOf("SUNDAY"); //返回Week类的SUNDAY实例
    Week[] days = Week.values(); // 返回Week的所有枚举值构成的数组,可用于遍历枚举类
    for(Week week : Week.values()) {
      ...
    }
    
  • 枚举类可以有抽象方法,抽象方法可以由枚举值实现,使枚举值具有自己的特性

    public enum Week {
      SUNDAY {
        String getSituation() {
          return "Good day!";
        }
      };
      
      abstract public String getSituation();
    }
    

相关文章

  • 枚举类和类的异同

    枚举类和类的异同 相同之处 枚举类也是类,同样具有成员变量、成员方法、构造器public enum Week { ...

  • 枚举和类

    枚举和类的异同 相同点: 枚举类是一种特殊的类,它和普通的类一样,有自己的成员变量、成员方法、构造器。 枚举类也可...

  • 枚举和类的异同

    枚举是java 5新增了一个menu关键字(它与class、interface关键字的地位相同),用于定义枚举,枚...

  • 枚举和类的异同

    定义: 枚举是指一组固定常量组成合法值的类型 相同的地方枚举类也是类,同样具有成员变量、成员方法、构造器例如 也可...

  • Java枚举和类的异同

    了解了java结构中的类,变量,方法,那枚举是什么呢?枚举是一种特殊的类,它定义了一系列有关联的常量,代表一种特定...

  • Java 枚举与类的异同

    An enum type is a special data type that enables for a va...

  • java enum实现原理

    一、分析自定义枚举类 普通的枚举类和抽象枚举类相似,故直接分析抽象枚举类。 1. 编写一个抽象枚举类 2. 编译 ...

  • Kotlin面向对象 (6)枚举类

    枚举类构造函数枚举常用属性和函数 kotlin 中使用 enum 和 class 两个关键词声明枚举类。 枚举类使...

  • 区分枚举类和类

    枚举类 概念: 用以存储一组有关联且有意义的常量的特殊数据类型 枚举类也是类,具有自己的成员变量和方法、构造器y ...

  • Java篇-枚举的使用

    一 : 自定义枚举类 枚举类调用 二 : 使用enum关键字定义枚举类 让枚举类实现接口: 可以让不同的枚举类的对...

网友评论

      本文标题:枚举类和类的异同

      本文链接:https://www.haomeiwen.com/subject/wwcbyqtx.html