Java 介面與抽象類別差異比較。本站提醒廣大學習愛好者:此文章僅供參考,不一定能完全符合您的需求。以下是完整比較正文
- 抽象類別:
(1) 概念:抽象類別是對一種事物的抽象,即對類抽象。抽象類別是對整個類別整體進行抽象,包含屬性、行為。Java 抽象類別和 Java 介面一樣,都用來宣告一個新的類型。而且作為一個類型的階層結構的終點。
(2) 形式:
public abstract class abstractDemo {
private String name;
public abstract void fun();
}
(3) 說明:
A:抽象類別中不一定有抽象方法,但有抽象方法的類別一定要定義為抽象類別。
B:Java 中類別有兩種,一種是具體類別,另一種是抽象類別。具體類別可實例化,抽象類別不可實例化。
C:對於抽象類別,如果需要新增方法,可以直接在抽象類別中新增具體實作,子類別可以不變更。
D:抽象方法只有宣告,沒有具體實作。抽象類別是為了繼承而存在的。
E:對於一個父類別,如果它的一個方法在父類別中實作沒有意義,必須根據子類別需求實作,則可宣告為 abstract 方法,此類別變成 abstract 抽象類別。
- 介面:
(1) 概念:介面是對行為的抽象。介面是對類別局部(行為)進行抽象。
(2) 形式:
public interface test {
public abstract void fun();
}
(3) 說明:介面中可含有變數和方法,但變數會被隱式指定為 public static final,方法會被隱式指定為 public abstract 且只能是 public abstract。
- 介面和抽象類別的差異與聯繫:
(1) 抽象類別是對一種事物的抽象,即對類抽象,而介面是對行為的抽象。
(2) 抽象類別是對整個類別整體抽象,包含屬性、行為,介面是對類別局部(行為)抽象。
(3) 繼承是「是否是」關係,介面實作是「有無」關係。
(4) 介面只給方法宣告不給實作。抽象類別可有抽象方法也可有普通方法。
- 使用介面的原因:
(1) 沒有介面,可擴充性無保障,因為 Java 是單繼承。
(2) 類別階層中任何類別都可實作介面,影響其所有子類別,不影響父類別。
(3) 一個類別最多一個父類別,但可同時實作多個介面。
- 關於《Java 程式設計思維》中抽象類別定義的探討:書中定義為「包含抽象方法的類別」,但發現無抽象方法只用 abstract 修飾也屬抽象類別。個人理解:抽象類別目的是為了繼承,語法上允許無抽象方法但無實際意義。
希望本文所述對大家的 Java 程式設計有所幫助。