首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 介面與抽象類別差異比較

     編輯:Java 相關知識

Java 介面與抽象類別差異比較。本站提醒廣大學習愛好者:此文章僅供參考,不一定能完全符合您的需求。以下是完整比較正文


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

希望本文所述對大家的 Java 程式設計有所幫助。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved