Java 列舉(Enums)解析:提高程式碼可讀性與易維護性

小万哥丶發表於2024-03-06

介面

在 Java 中,實現抽象的另一種方式是使用介面。

介面定義

介面是一個完全抽象的類,用於將具有空方法體的相關方法分組:

// 介面
interface Animal {
  public void animalSound(); // 介面方法(沒有具體實現體)
  public void run(); // 介面方法(沒有具體實現體)
}

實現介面

要訪問介面方法,必須使用 implements 關鍵字(而不是 extends)由另一個類“實現”(有點類似於繼承)。介面方法的具體實現體由“實現”類提供:

// 介面
interface Animal {
  public void animalSound(); // 介面方法(沒有具體實現體)
  public void sleep(); // 介面方法(沒有具體實現體)
}

// Pig “實現” Animal 介面
class Pig implements Animal {
  public void animalSound() {
    // animalSound()的具體實現體在這裡提供
    System.out.println("The pig says: wee wee");
  }
  public void sleep() {
    // sleep()的具體實現體在這裡提供
    System.out.println("Zzz");
  }
}

class Main {
  public static void main(String[] args) {
    Pig myPig = new Pig(); // 建立一個 Pig 物件
    myPig.animalSound();
    myPig.sleep();
  }
}

介面注意事項

  • 與抽象類一樣,介面不能用於建立物件(在上面的示例中,無法建立“Animal”物件)
  • 介面方法沒有具體的實現體 - 實現體由“實現”類提供
  • 在實現介面時,必須重寫其所有方法
  • 介面方法預設為抽象和公共的
  • 介面屬性預設為公共、靜態和最終的
  • 介面不能包含建構函式(因為它不能用於建立物件)

何時使用介面?

  1. 為了實現安全性 - 隱藏物件的某些細節,僅顯示其重要細節(介面)。

  2. 為了實現多重繼承 - Java 不支援“多重繼承”(一個類只能繼承自一個超類)。但是,它可以透過介面實現,因為類可以實現多個介面。注意:要實現多個介面,請用逗號分隔它們(見下面的示例)。

多個介面

要實現多個介面,請用逗號分隔它們:

interface FirstInterface {
  public void myMethod(); // 介面方法
}

interface SecondInterface {
  public void myOtherMethod(); // 介面方法
}

class DemoClass implements FirstInterface, SecondInterface {
  public void myMethod() {
    System.out.println("Some text..");
  }
  public void myOtherMethod() {
    System.out.println("Some other text...");
  }
}

class Main {
  public static void main(String[] args) {
    DemoClass myObj = new DemoClass();
    myObj.myMethod();
    myObj.myOtherMethod();
  }
}

介面的優勢

  • 介面可以促進程式碼的重用。
  • 介面可以提高程式碼的可讀性和可維護性。
  • 介面可以實現解耦,使程式碼更靈活。

總結

介面是 Java 中重要的概念,它們可以幫助您編寫更安全、更可重用、更靈活和更易於維護的程式碼。

列舉(Enums)

列舉是一個特殊的“類”,表示一組常量(不可更改的變數,如 final 變數)。

建立列舉

要建立一個列舉,請使用 enum 關鍵字(而不是 classinterface),並用逗號分隔常量。注意,它們應該使用大寫字母:

enum Level {
  LOW,
  MEDIUM,
  HIGH
}

您可以使用點語法訪問列舉常量:

Level myVar = Level.MEDIUM;

Enum 是“enumerations”的縮寫,意思是“具體列舉”。

在類內部定義列舉

您還可以在類內部定義列舉:

public class Main {
  enum Level {
    LOW,
    MEDIUM,
    HIGH
  }

  public static void main(String[] args) {
    Level myVar = Level.MEDIUM;
    System.out.println(myVar);
  }
}

輸出將是:

MEDIUM

在 Switch 語句中使用列舉

列舉常用於 switch 語句中,以檢查相應的值:

enum Level {
  LOW,
  MEDIUM,
  HIGH
}

public class Main {
  public static void main(String[] args) {
    Level myVar = Level.MEDIUM;

    switch(myVar) {
      case LOW:
        System.out.println("Low level");
        break;
      case MEDIUM:
        System.out.println("Medium level");
        break;
      case HIGH:
        System.out.println("High level");
        break;
    }
  }
}

輸出將是:

Medium level

遍歷列舉

列舉型別具有 values() 方法,該方法返回所有列舉常量的陣列。當您想要遍歷列舉的常量時,此方法非常有用:

for (Level myVar : Level.values()) {
  System.out.println(myVar);
}

輸出將是:

LOW
MEDIUM
HIGH

列舉與類的區別

列舉可以像類一樣具有屬性和方法。唯一的區別是列舉常量是 publicstaticfinal(不可更改的 - 不能被覆蓋)的。

列舉不能用於建立物件,也不能擴充套件其他類(但可以實現介面)。

何時以及為何使用列舉?

當您知道值不會更改時

,比如月份天數、星期幾、顏色、撲克牌等,可以使用列舉。

使用列舉可以使程式碼更易讀、更易維護,並避免使用 final 變數和 switch 語句中的字串。

列舉的優勢:

  • 可讀性強
  • 易於維護
  • 安全性高
  • 程式碼簡潔

總結:

列舉是 Java 中一種強大的工具,可以用來表示一組常量。它們易於使用和理解,並且可以使您的程式碼更易讀、更易維護。

最後

為了方便其他裝置和平臺的小夥伴觀看往期文章:

微信公眾號搜尋:Let us Coding,關注後即可獲取最新文章推送

看完如果覺得有幫助,歡迎 點贊、收藏、關注

相關文章