抽象類和介面的區別


抽象類可以包含抽象方法和非抽象方法,而介面只能包含抽象方法。抽象類會被繼承,而介面會被實現。閱讀本文以瞭解抽象類和介面之間的其他區別,以及它們在實際程式中的使用方式。

什麼是抽象類?

抽象類充當一個模板,儲存程式的方法和資料成員。當您預計不同的子類將繼承具有相同方法和欄位的抽象類時,應該使用抽象類。

抽象類可以包含或不包含抽象方法,即沒有方法體的方法。但是,如果一個類至少包含一個抽象方法,則該類必須宣告為抽象類。

抽象類不能被例項化,但可以被繼承。要使用抽象類,您必須從另一個類繼承它,並在其中提供抽象方法的實現。您必須使用關鍵字**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 程式設計示例來突出抽象類與介面的不同之處,以及開發人員如何使用這些概念。

更新於: 2022年7月28日

5K+ 瀏覽量

開啟你的職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.