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抽像類的相似之處以及不同之處。 如果沒有這兩個概念的必要知識,將導致代碼充滿缺陷。
如果您有興趣進一步了解並在實際問題中實施這些概念,您可以查看由利物浦約翰摩爾斯大學認可的upGrad和IIIT-Bangalore提供的計算機科學碩士課程。 該課程專為入門級專業人士(21-45 歲)設計,提供來自領先行業專家和軟件工程學院的 500 多個小時的培訓。 更多課程詳情可查看 upGrad 官方網頁。