<noframes id="7xbfr"><pre id="7xbfr"><output id="7xbfr"></output></pre>

      <big id="7xbfr"><font id="7xbfr"><listing id="7xbfr"></listing></font></big>
        <p id="7xbfr"></p>
        <menuitem id="7xbfr"></menuitem>

          <video id="7xbfr"><mark id="7xbfr"><listing id="7xbfr"></listing></mark></video>
            <form id="7xbfr"></form>

          <delect id="7xbfr"><var id="7xbfr"></var></delect>

          Java 枚舉與普通類的區別

          時間:2022-10-10 10:47:02 類型:JAVA
          字號:    

            相同點

            枚舉類是一種特殊的類,它和普通的類一樣,有自己的成員變量、成員方法、構造器。

            不同點

            枚舉的構造方法私有,構造器只能使用 private 訪問修飾符,所以無法從外部調用構造器,構造器只在構造枚舉值時被調用。也就是說枚舉類不給外界實例化的機會,只能它自己實例化,而一個枚舉類的所有實例就只有枚舉前面分號前的那幾個,其他地方不允許創建。

            枚舉類的所有實例(枚舉值)必須在枚舉類的第一行顯式地列出,否則這個枚舉類將永遠不能產生實例。列出這些實例(枚舉值)時,系統會自動添加 public static final 修飾,無需程序員顯式添加。

            關于以上兩點的一個例子

          public enum Color {
              GREEN,RED,BLUE,GRAY;
          }

            如果翻譯為普通類大致為:

          public class Color {
              public static final Color GREEN = new Color(),
                      RED = new Color(),
                      BLUE = new Color(),
                      GRAY = new Color();
           
              private Color() {
              }
          }

            枚舉允許為其定義抽象方法,如果枚舉里聲明一個抽象方法,前面的每個實例就必須要實現該方法。注意abstract關鍵字對于枚舉類來說是不需要的。

          public enum Color {
              GREEN {
                  @Override
                  void draw() {
                  }
              },RED {
                  @Override
                  void draw() {
                  }
              },BLUE {
                  @Override
                  void draw() {
                  }
              },GRAY {
                  @Override
                  void draw() {
                  }
              };
              abstract void draw();
          }

            三、向枚舉中添加新方法

          public enum Color {      
            RED("紅色", 1), GREEN("綠色", 2), BLANK("白色", 3), YELLO("黃色", 4);      
            // 成員變量 
            private String name;      
            private int index;      
            // 構造方法     
            private Color(String name, int index) {        
            this.name = name;         
            this.index = index;     
           } 
           // 普通方法     
            public static String getName(int index) {        
               for (Color c : Color.values()) {              
                     if (c.getIndex() == index) {                 
                           return c.name; 
                }          
             } 
              return null;     
           } 
           // get set 方法     
               public String getName() {       
                  return name;
                } 
               public void setName(String name) {    
                     this.name = name; 
               }      
               public int getIndex() {      
                   return index; 
               }      
               public void setIndex(int index) { 
                   this.index = index; 
               }  }  
          }


          黄网站免费 <