zoukankan      html  css  js  c++  java
  • Java分享笔记:自定义枚举类 & 使用enum关键字定义枚举类

      在JDK1.5之前没有enum关键字,如果想使用枚举类,程序员需要根据Java语言的规则自行设计。从JDK1.5开始,Java语言添加了enum关键字,可以通过该关键字方便地定义枚举类。这种枚举类有自己的程序编写规则,并且具有一些特殊方法。

      下面是笔者分别针对自定义枚举类enum枚举类的程序设计。

    [1] 自定义枚举类

     1 /*-------------------------
     2 JDK1.5之前通过自行设计程序,来自定义枚举类
     3 下面以季节为例自定义枚举类
     4 --------------------------*/
     5 package pack01;
     6 
     7 public class Season {
     8     public static void main(String[] args) {
     9 
    10         FourSeasons spring = FourSeasons.SPRING;
    11         FourSeasons winter = FourSeasons.WINTER;
    12         
    13         System.out.println( spring.getName() );
    14         System.out.println( spring.toString() );
    15         System.out.println();
    16         System.out.println( winter.getName() );
    17         System.out.println( winter.toString() );
    18     }
    19 }
    20 
    21 // 定义表示季节的枚举类,共有4个内部对象
    22 class FourSeasons {
    23 
    24     // 定义类的属性:私有的,终态的,在构造器中进行初始化
    25     private final String name;
    26 
    27     // 将构造器私有化,使构造器不能在类的外部被使用
    28     private FourSeasons(String name) {
    29         this.name = name;
    30     }
    31 
    32     // get方法返回属性值
    33     public String getName() {
    34         return name;
    35     }
    36 
    37     // 覆盖toString方法,设置默认打印值
    38     public String toString() {
    39         return "This is " + name;
    40     }
    41 
    42     // 在类的内部创建对象
    43     public static final FourSeasons SPRING = new FourSeasons("spring");
    44     public static final FourSeasons SUMMER = new FourSeasons("summer");
    45     public static final FourSeasons AUTUMN = new FourSeasons("autumn");
    46     public static final FourSeasons WINTER = new FourSeasons("winter");
    47 }

    [2] 使用enum关键字定义枚举类

     1 /*-------------------------
     2 JDK1.5开始可以通过enum关键字来定义枚举类
     3 使用enum关键字定义枚举类与自定义枚举类的程序编写不同之处:
     4 ....//将关键字class用关键字enum替换
     5 ....//必须在类体的一开始创建内部的对象,并遵循一定的书写规则
     6 ....//枚举类有两个常用的方法:
     7 ........//values():将枚举类中的所有对象以数组的方式返回
     8 ........//valueOf(String arg0):将类中的某一个对象的名字以字符串的形式作为参数传入,返回该对象
     9 ....//枚举类可以实现接口,覆盖接口中的抽象方法既可以写在枚举类的类体中,也可以写在对象后的花括号中
    10 ........//若写在了对象后的花括号中,则该方法不再是所有对象公共的。不同对象调用同一方法时,可以得到不同的效果。
    11 
    12 下面以季节为例使用enum关键字定义枚举类
    13 --------------------------*/
    14 package pack02;
    15 
    16 public class Season {
    17     public static void main(String[] args) {
    18         
    19         //测试枚举类中的values()方法
    20         FourSeasons[] seasons = FourSeasons.values();
    21         for( int i=0; i<seasons.length; ++i ) {
    22             System.out.println( seasons[i].getName() );
    23         }
    24         System.out.println();
    25         
    26         //测试枚举类中的valueOf()方法,创建春天的对象
    27         FourSeasons spring = FourSeasons.valueOf("SPRING");
    28         System.out.println( "valueOf("SPRING"): " + spring.getName() + '
    ' );
    29         
    30         //创建夏,秋,冬的对象
    31         FourSeasons summer = FourSeasons.SUMMER;
    32         FourSeasons autumn = FourSeasons.AUTUMN;
    33         FourSeasons winter = FourSeasons.WINTER;
    34         spring.printWords();
    35         summer.printWords();
    36         autumn.printWords();
    37         winter.printWords();
    38         //上面调用接口中的方法打印出来的结果,春天与其他三个季节是不同的,因为SPRING对象重新覆盖了接口中的方法
    39     }
    40 }
    41 
    42 //定义一个接口,让枚举类来实现该接口
    43 interface Inter{
    44     void printWords();
    45 }
    46 
    47 // 定义表示季节的枚举类,共有4个内部对象
    48 enum FourSeasons implements Inter { //使用enum关键字,并实现上述接口
    49 
    50     //必须在类体中的一开始创建对象,对象之间用逗号分开,并且要遵循一定的书写规则
    51     SPRING("spring"){
    52         public void printWords() {//在创建对象时可以单独重写接口中的方法,这时类体中的重写方法对于该对象将不再起作用
    53             System.out.println("This is spring");
    54         }
    55     },
    56     SUMMER("summer"),
    57     AUTUMN("autumn"),
    58     WINTER("winter");
    59     
    60     // 定义类的属性:私有的,终态的,在构造器中进行初始化
    61     private final String name;
    62 
    63     // 将构造器私有化,使构造器不能在类的外部被使用
    64     private FourSeasons(String name) {
    65         this.name = name;
    66     }
    67     
    68     // get方法返回属性值
    69     public String getName() {
    70         return name;
    71     }
    72     
    73     // 重写接口中的抽象方法
    74     public void printWords() {
    75         System.out.println("There are four different seasons.");
    76     }
    77 }

    注:希望与各位读者相互交流,共同学习进步。

  • 相关阅读:
    php数组函数-array_push()
    php数组函数-array_pop()
    php数组函数-array_pad()
    php数组函数-array_merge()
    php数组函数-array_map()
    php数组函数-array_keys()
    php数组函数-array_key_exists()
    php数组函数-array_intersect()
    php数组函数-array_flip()
    php数组函数-array_filter()
  • 原文地址:https://www.cnblogs.com/EarthPioneer/p/9378181.html
Copyright © 2011-2022 走看看