本文剖析了Java學習中介面和抽象類別的區別,對於初學者深入學習並精確掌握Java程式設計的概念至關重要。詳情如下:
Java初學者往往容易提出這樣的問題:介面和抽象類別有什麼不同?你選擇使用介面和抽象類別的依據是什麼?
介面和抽象類別的概念不一樣。介面是對動作的抽象,抽象類別是對根源的抽象。
抽象類別表示的是,這個物件是什麼。介面表示的是,這個物件能做什麼。例如,男人,女人,這兩個類別(如果是類別的話…),他們的抽象類別是人。說明,他們都是人。
人可以吃東西,狗也可以吃東西,你可以把「吃東西」定義成一個接口,然後讓這些類去實現它.
所以,在高階語言上,一個類別只能繼承一個類別(抽象類別)(正如人不可能同時是生物和非生物),但是可以實作多個介面(吃飯介面、走路介面)。
第一點.介面是抽象類別的變體,介面中所有的方法都是抽象的。而抽象類別是聲明方法的存在而不去實作它的類別。
第二點.介面可以繼承,抽象類別不行(註:此處原作者寫錯了,抽象類別可以被繼承,如果子類別全部實作抽象類別中的方法,則子類別不是抽象類別;反之,有一個沒有被實現,則子類別也是抽象類別)
第三點.介面定義方法,不能實現,而抽象類別可以實作部分方法。
第四點.介面中基本資料型態為static 抽類像不是的。
當你專注於一個事物的本質的時候,用抽象類別;當你專注於一個操作的時候,用介面。
抽象類別的功能要遠超過接口,但是,定義抽象類別的代價很高。因為高階語言來說(從實際設計上來說也是)每個類別只能繼承一個類別。在這個類別中,你必須繼承或寫出其所有子類別的所有共通性。雖然介面在功能上會弱化許多,但是它只是針對一個動作的描述。而且你可以在一個類別中同時實作多個介面。在設計階段會降低難度的。