抽象類和介面的區別
抽象類可以包含抽象方法和非抽象方法,而介面只能包含抽象方法。抽象類會被繼承,而介面會被實現。閱讀本文以瞭解抽象類和介面之間的其他區別,以及它們在實際程式中的使用方式。
什麼是抽象類?
抽象類充當一個模板,儲存程式的方法和資料成員。當您預計不同的子類將繼承具有相同方法和欄位的抽象類時,應該使用抽象類。
抽象類可以包含或不包含抽象方法,即沒有方法體的方法。但是,如果一個類至少包含一個抽象方法,則該類必須宣告為抽象類。
抽象類不能被例項化,但可以被繼承。要使用抽象類,您必須從另一個類繼承它,並在其中提供抽象方法的實現。您必須使用關鍵字**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 程式設計示例來突出抽象類與介面的不同之處,以及開發人員如何使用這些概念。
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP