介面
在 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”物件)
- 介面方法沒有具體的實現體 - 實現體由“實現”類提供
- 在實現介面時,必須重寫其所有方法
- 介面方法預設為抽象和公共的
- 介面屬性預設為公共、靜態和最終的
- 介面不能包含建構函式(因為它不能用於建立物件)
何時使用介面?
-
為了實現安全性 - 隱藏物件的某些細節,僅顯示其重要細節(介面)。
-
為了實現多重繼承 - 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
關鍵字(而不是 class
或 interface
),並用逗號分隔常量。注意,它們應該使用大寫字母:
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
列舉與類的區別
列舉可以像類一樣具有屬性和方法。唯一的區別是列舉常量是 public
、static
和 final
(不可更改的 - 不能被覆蓋)的。
列舉不能用於建立物件,也不能擴充套件其他類(但可以實現介面)。
何時以及為何使用列舉?
當您知道值不會更改時
,比如月份天數、星期幾、顏色、撲克牌等,可以使用列舉。
使用列舉可以使程式碼更易讀、更易維護,並避免使用 final
變數和 switch
語句中的字串。
列舉的優勢:
- 可讀性強
- 易於維護
- 安全性高
- 程式碼簡潔
總結:
列舉是 Java 中一種強大的工具,可以用來表示一組常量。它們易於使用和理解,並且可以使您的程式碼更易讀、更易維護。
最後
為了方便其他裝置和平臺的小夥伴觀看往期文章:
微信公眾號搜尋:Let us Coding
,關注後即可獲取最新文章推送
看完如果覺得有幫助,歡迎 點贊、收藏、關注