抽象類和介面的區別
抽象類可以包含抽象方法和非抽象方法,而介面只能包含抽象方法。抽象類是透過擴充套件來使用的,而介面是透過實現來使用的。閱讀本文,瞭解抽象類和介面之間其他差異以及它們在實際程式中的使用方法。
什麼是抽象類?
抽象類充當一個模板,儲存程式的方法和資料成員。當您預計它會被具有公共方法和欄位的不同子類繼承時,應該使用抽象類。
抽象類可以包含或不包含抽象方法,即沒有方法體的函式。但是,如果一個類至少包含一個抽象方法,那麼該類必須宣告為抽象類。
抽象類不能被例項化,但可以被繼承。要使用抽象類,必須從另一個類繼承它,並在其中提供抽象方法的實現。您必須使用關鍵字 **abstract** 來建立抽象類或抽象方法。
抽象方法
抽象方法在基類中沒有任何程式碼;程式碼將在其派生類中新增。如果您繼承了一個抽象類,則必須為其中的所有抽象方法提供實現。如果不這樣做,則子類也必須宣告為抽象類。
擴充套件抽象類
這是一個包含抽象方法和非抽象方法的抽象類的簡單 Java 程式示例:
示例
// abstract class abstract class Calculator{ // abstract method abstract int add (int a, int b); // non-abstract; method with implementation int mul (int a, int b){ return a*b; } } // Inheriting the abstract class class Sum extends Calculator{ public int add (int a, int b){ return a+b; } } public class test{ public static void main (String []args){ Calculator obj = new Sum(); System.out.println("The sum is: " + obj.add(2,3)); System.out.println("The multiplication is: " + obj.mul(2,3)); } }
輸出
它將產生以下輸出:
The sum is: 5 The multiplication is: 6
什麼是介面?
介面是 Java 中的一種引用型別。它類似於類。它是一組抽象方法的集合。一個類 **實現** 介面,從而繼承介面的抽象方法。
除了抽象方法之外,介面還可以包含常量、預設方法、靜態方法和巢狀型別。只有預設方法和靜態方法才有方法體。
編寫介面類似於編寫類。但是,類描述了物件的屬性和行為。而介面包含類實現的行為。
除非實現介面的類是抽象類,否則介面的所有方法都需要在類中定義。
介面在以下方面類似於類:
介面可以包含任意數量的方法。
介面以 **.java** 副檔名寫入檔案,介面名稱與檔名匹配。
介面的位元組碼出現在 **.class** 檔案中。
接口出現在包中,其對應的位元組碼檔案必須位於與包名稱匹配的目錄結構中。
介面在幾個方面與類不同,包括:
您不能例項化介面。
介面不包含任何建構函式。
介面中的所有方法都是抽象的。
介面不能包含例項欄位。介面中出現的唯一欄位必須同時宣告為 **static** 和 **final**。
介面不是由類擴充套件的;它是由類實現的。
介面可以擴充套件多個介面。
介面具有以下屬性:
介面隱式地是抽象的。在宣告介面時,不需要使用 **abstract** 關鍵字。
介面中的每個方法也隱式地是抽象的,因此不需要 **abstract** 關鍵字。
介面中的方法隱式地是公共的。
實現介面
**interface** 關鍵字用於宣告介面。這是一個在 Java 中宣告和實現介面的簡單示例:
示例
// Declaring the Interface interface Animal { public void eat(); public void travel(); } // Implementing the Interface public class MammalInt implements Animal { public void eat() { System.out.println("Mammal eats"); } public void travel() { System.out.println("Mammal travels"); } public int noOfLegs() { return 0; } public static void main(String args[]) { MammalInt m = new MammalInt(); m.eat(); m.travel(); } }
輸出
它將產生以下輸出:
Mammal eats Mammal travels
結論
抽象類和介面是面向物件程式設計中的重要概念。我們在這裡使用 Java 程式設計示例來突出抽象類與介面的不同之處,以及開發人員如何使用這些概念。
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP