Java中的抽像類和方法[附例子]

已發表: 2021-06-18

下面的文章將討論 Java 中抽象的屬性以及如何通過抽像類和抽象方法來實現它。 我們將探索java中抽像類和接口的特性。

目錄

抽象

Java 的重要概念之一是抽象。 它是僅向用戶顯示程序的重要細節的屬性。 所有非必要部分都被隱藏起來。 這個過程可以通過電子郵件的例子來解釋。 發件人發送一封電子郵件,該電子郵件將發送給收件人。 發件人唯一知道的信息是電子郵件已發送。 發送電子郵件的後台進程對用戶是隱藏的。 類似的是面向對象編程 (OOP) 中的過程,其中向用戶顯示基本元素,而隱藏非基本部分。 用戶沒有關於實現過程的信息,但只有功能是已知的。 這種機制被稱為抽象,其中僅顯示對象的基本特徵而忽略其他特徵。

在Java中,抽像是通過抽像類和接口來實現的。

Java中的抽像類

關鍵字“abstract”用於 Java 中的抽像類和方法。 抽像類在其聲明中具有 abstract 關鍵字。

Java 抽像類的語法是:

抽像類 class_name

{

公共抽象無效 the_abstractMethod();

公共無效 the_normalMethod()

{

#方法體

}

}

上面的語法表明,普通方法和抽象方法都可以包含在抽像類中。

抽像類的一些屬性是:

  • Java 抽像類中可能存在也可能不存在抽象方法
  • 類中至少存在一個抽象方法使該類成為抽像類。
  • 抽像類不能有任何對象,因此不能直接實例化。
  • 只有從另一個類繼承並實現抽象方法的抽像類才能使用。
  • 繼承抽像類時需要正確實現抽象方法。
  • 常規方法和抽象方法都可以出現在Java 抽像類中。
  • 參數化構造函數可能存在於抽像類中。 此外,抽像類總是包含一個默認構造函數。

抽象方法

抽象方法是那些不需要實現其聲明的方法類型。 這些方法沒有主體,這意味著沒有實現。 抽象方法的一些屬性是:

  • Java中抽象方法是通過關鍵字“abstract”聲明的。
  • 在聲明抽象方法時,抽象關鍵字必須放在方法名稱之前。
  • 抽象方法中沒有主體,只有方法的簽名存在。
  • Java中抽象方法沒有花括號,但方法的末尾會有分號 (;)

抽象雙方法(雙 n1,雙 n2);

  • 任何包含抽象方法的類都應該聲明為抽像類。 儘管相反的情況可能並非如此,即抽像類沒有必要具有抽象方法。
  • 普通類繼承抽像類需要實現父類中的所有抽象方法。

抽象方法的示例

公共抽像類 Car

{

私有字符串模型;

私有字符串顏色;

私人 int 年;

公共抽象雙計算價格();

}

如果派生類不實現抽象方法,則會導致無法實例化的抽像類。

一些不能與 Java 中的 abstract 關鍵字一起使用。

  • 最終的
  • 抽象的本地人
  • 抽象靜態
  • 抽象私有
  • 抽象同步
  • 抽象嚴格

下面顯示了在 Java 中使用抽象方法的代碼

資源

代碼的輸出是:

Java 接口

除了抽像類和抽象方法之外,Java 還使用接口來實現抽象。 當相關的方法組合成一個空體時,就稱為接口。 接口類似於抽像類,因為它是抽象方法的分組。 當一個類實現接口時,接口內的所有抽象方法都會被繼承。 該接口還可能包含默認方法、常量和靜態方法。 僅存在默認方法和靜態方法的方法體。 繼承和類可以用類似的方式編寫,但類可以描述對象的屬性和行為。 雖然在接口的情況下只存在對象的那些行為,但這些行為是由類實現的。

一個類必須定義它實現的接口的所有方法。 僅對於抽像類,方法不需要由類定義。

接口在以下方麵類似於Java 抽像類:

  • 一個接口中可以包含任意數量的方法。
  • .java 擴展名用於在文件中編寫接口。 文件名應與接口名匹配。
  • .class 文件包含接口的字節碼。
  • 接口出現在包中。 接口的字節碼文件存在於與包名同名的目錄中。

接口在以下方面不同於Java 抽像類:

  • 接口無法實例化。
  • 接口中沒有構造函數。
  • 該接口僅包含抽象方法。
  • 接口中不存在實例字段。 如果字段必須出現在界面中,則必須將其聲明為靜態和最終字段。
  • 只有類可以實現接口,但不能擴展。
  • 一個接口可以擴展多個接口。

從世界頂級大學在線學習軟件課程獲得行政 PG 課程、高級證書課程或碩士課程,以加快您的職業生涯。

接口的屬性

  • 不需要通過abstract關鍵字將接口聲明為抽象,因為它是隱式抽象的。
  • 抽象關鍵字不需要將方法聲明為抽象,因為它們是隱式抽象的。
  • 接口中的所有方法都是隱式公開的。

如何聲明一個接口?

關鍵字“interface”用於聲明接口。 完全抽像是通過使用接口來提供的。 默認情況下,接口中的所有方法都是抽象的和公共的。 這意味著接口中沒有任何方法,所有字段都是靜態的、公共的和最終的。

接口語法:

接口名稱_of_the_interface {

# 聲明字段

# 聲明抽象方法

}

例如界面播放器

{

最終整數年齡 = 40;

整數計算();

}

如何實現一個接口?

要實現接口,使用關鍵字“ implements” 一個類可以實現多個接口。 在這種情況下,關鍵字“ implements”後跟一個用逗號分隔的接口列表。 關鍵字在類聲明中使用。

實現該接口的示例如下所示:

Maruti 類實現 Car

下面顯示了一個顯示 Java 接口實現的代碼示例。

資源

該代碼生成以下輸出:

應用多個接口實現的代碼如下所示。

資源

該代碼生成以下輸出:

一些文字…

其他一些文字…

為什麼使用接口?

  • 接口用於實現完全抽象。
  • Java中的多重繼承可以通過使用繼承來實現,因為Java不支持多重繼承。
  • 鬆散耦合可以通過使用接口來實現。
  • 通過使用java中的實現抽象可以實現。

儘管 Java中的抽象可以通過Java 抽像類來實現,但使用接口是因為它們包含最終、公共和靜態變量。 但是,非最終變量可能存在於抽像類中。

如果同時使用Java接口和Java抽像類來實現抽象,那麼什麼時候應該使用接口和抽像類呢?

  • 當用戶需要為一組子類定義模板時,使用抽像類。
  • 當用戶需要為其他類定義角色時使用接口。

抽象的一些優點是:

  • 程序的複雜性降低了。
  • 代碼重複的可能性較小,從而提高了可重用性。
  • 通過使用抽象來提高程序的安全性,因為只向用戶提供了一些細節。

結論

本文討論了 Java 中抽象的詳細概念,這是一種向用戶隱藏非必要信息的技術。 在Java中,抽像是通過抽像類和接口來實現的。 接口提供 100% 的抽象,而抽像類提供部分抽象。 文章進一步提到了何時使用接口以及何時應該使用抽像類。 它還列出了接口與Java抽像類的相似之處以及不同之處。 如果沒有這兩個概念的必要知識,將導致代碼充滿缺陷。

如果您有興趣進一步了解並在實際問題中實施這些概念,您可以查看由利物浦約翰摩爾斯大學認可的upGradIIIT-Bangalore提供的計算機科學碩士課程。 該課程專為入門級專業人士(21-45 歲)設計,提供來自領先行業專家和軟件工程學院的 500 多個小時的培訓。 更多課程詳情可查看 upGrad 官方網頁。

提升自己並為未來做好準備

從 IIIT-B 申請軟件開發執行 PG 計劃