• Java入门笔记 07-枚举类


      介绍:在某些情况下,一个类的对象是有限且固定的,比如季节类,只有四个对象:春夏秋冬。这种实例有限而且固定的类,被称为枚举类。在JDK 5.0及以后,可以使用enum关键字定义枚举类,并且默认继承于java.lang.Enum类。

    一、使用enum关键字定义枚举类

      1. 枚举类入门:最简单的枚举类可以仅仅定义枚举值,若需要使用该枚举类的某个实例,可以直接通过 枚举类名.枚举值 来调用。如下:

    enum Season{
        SPRING,SUMMER,AUTUMN,WINTER;
    }
    
    Season s = Season.SPRING;
    System.out.println(s.toString());//SPRING

      2. 枚举类进阶:枚举类是一种特殊的类,因此也可以定义成员变量、方法和构造器。

    • 提供当前枚举类的对象,多个对象之间采用逗号隔开,使用分号结束;
    • 声明Season对象的属性,使用private final修饰;
    • 私有化构造器,并为对象属性赋值;
    • 其他诉求:获取枚举类对象的属性。

      在枚举类中列出枚举值时,实际上就是调用构造器创建枚举类对象,只是这里无须使用new关键字,也无须显式调用构造器。前面列出枚举值时无须传入参数,甚至无须使用括号,仅仅是因为前面的枚举类中包含无参数的构造器。

     1 enum Season{
     2     SPRING("春天","这是春天"),
     3     SUMMER("夏天","这是夏天"),
     4     AUTUMN("秋天","这是秋天"),
     5     WINTER("冬天","这是冬天");
     6 
     7     private final String seasonName;
     8     private final String seasonDesc;
     9 
    10     private Season(String seasonName,String seasonDesc){
    11         this.seasonName = seasonName;
    12         this.seasonDesc = seasonDesc;
    13     }
    14 
    15     public String getSeasonName() {
    16         return seasonName;
    17     }
    18 
    19     public String getSeasonDesc() {
    20         return seasonDesc;
    21     }
    22 }

      3. 实现接口的枚举类

     1 interface Info{
     2     void show();
     3 }
     4 
     5 enum Season implements Info{
     6     SPRING("春天","这是春天"),
     7     SUMMER("夏天","这是夏天"),
     8     AUTUMN("秋天","这是秋天"),
     9     WINTER("冬天","这是冬天");
    10 
    11     private final String seasonName;
    12     private final String seasonDesc;
    13 
    14     private Season(String seasonName,String seasonDesc){
    15         this.seasonName = seasonName;
    16         this.seasonDesc = seasonDesc;
    17     }
    18 
    19     public String getSeasonName() {
    20         return seasonName;
    21     }
    22 
    23     public String getSeasonDesc() {
    24         return seasonDesc;
    25     }
    26 
    27     @Override
    28     public void show() {
    29         System.out.println("这是一个季节");
    30     }
    31 }
    32 
    33 Season s = Season.SPRING;
    34 System.out.println(s.toString());
    35 s.show();
    36 
    37 输出:
    38 SPRING
    39 这是一个季节

      也可以将接口中的抽象方法放在枚举值中来实现,如下:

    interface Info{
        void show();
    }
    
    enum Season implements Info{
        SPRING("春天","这是春天"){
            public void show() {
                System.out.println("这是春天");
            }
        },
        SUMMER("夏天","这是夏天"){
            public void show() {
                System.out.println("这是夏天");
            }
        },
        AUTUMN("秋天","这是秋天"){
            public void show() {
                System.out.println("这是秋天");
            }
        },
        WINTER("冬天","这是冬天"){
            public void show() {
                System.out.println("这是冬天");
            }
        };
    
        private final String seasonName;
        private final String seasonDesc;
    
        private Season(String seasonName,String seasonDesc){
            this.seasonName = seasonName;
            this.seasonDesc = seasonDesc;
        }
    
        public String getSeasonName() {
            return seasonName;
        }
    
        public String getSeasonDesc() {
            return seasonDesc;
        }
    }
    
    Season s = Season.SPRING;
    System.out.println(s.toString());
    s.show();
    
    输出:
    SPRING
    这是春天
  • 相关阅读:
    一步一步做高性能服务器(C++) -- Day 3
    一步一步做高性能服务器(C++) -- Day 2
    一步一步做高性能服务器(C++) -- Day 1
    一步一步做高性能服务器(C++) -- Day 0
    HDU ACMSTEPS 1.3.4
    铭记
    子窗口与主窗口分开处理
    autoit小贴士
    autoit使用WMIC获取硬件信息
    Windows WMIC命令使用详解
  • 原文地址:https://www.cnblogs.com/dailymatters/p/12293881.html
Copyright © 2020-2023  润新知