Java中的抽像類和抽象方法是什麼? 我應該什麼時候使用它? 附教程

已發表: 2019-09-12
java-abstract-class-tutorial-by-crunchify

幾天前,我寫了一篇關於 Java 基礎知識的文章,關於什麼是 Java 中的接口以及如何使用它? 本教程還涉及基本的 Java 基礎“ Abstract Class and Abstract Method ”。

什麼是抽像類?

讓我們先了解 Abstract 類,然後再看 Example。

  • 抽像類是聲明為abstract的類
  • 抽像類不能被實例化
  • 抽像類可以被子類化
  • 它可能包含也可能不包含抽象方法
  • 當抽像類subclassed化時,子類通常為其父類中的所有抽象方法提供實現。
  • 如果子類不提供實現,那麼子類也必須聲明為abstract

這是一個非常basic Java Interview Question 。 可能是您在面試中遇到的1 st Java Interview Question

我可以在不添加抽象方法的情況下定義抽像類嗎?

當然是的。 聲明類抽象僅意味著您不允許它自己實例化。 非抽像類中不能有抽象方法。

什麼是抽象方法?

  • abstract method是在沒有實現的情況下聲明的方法。
  • 它只有一個方法簽名。

讓我們從一個例子開始。 問題描述:

  1. 創建CrunchifyExam.java類,它有一個名為checkResult()的抽象方法
  2. 創建類Crunchify1stSchoolExamResult.java ,它擴展抽像類CrunchifyExam.java
  3. 創建類Crunchify2ndSchoolExamResult.java ,它擴展抽像類CrunchifyExam.java
  4. 現在以上兩個類都必須提供 checkResult() 方法的實現
  5. 兩所學校可能有自己不同的procedurenumber of checks來確定用戶是PASSED or FAILED ,他們可以自由地擁有自己的checkResult()實現

Crunchify1stSchoolExamResult.java中擴展CrunchifyExam類後,Eclipse 將提示您實現CrunchifyExam.java中提到的抽象方法

實現抽象方法 - Crunchify 教程

Crunchify1 st SchoolExamResult.java

Crunchify2 nd SchoolExamResult.java

Eclipse 控制台結果:

只需右鍵單擊Crunchify2ndSchoolExamResult.java並作為Java Application運行以查看以下結果。

現在你可能有一個問題

為什麼我不能在這裡使用接口而不是使用Abstract MethodClass並將 CrunchifyExam 作為接口?

好吧—— Sure you could ——但你還需要實現getExamTime ()、 setExamTime ()、 getExamTime ()、 setExamTime () 方法。

通過使用抽像類,您可以繼承其他(非抽象)方法的實現。 你不能用接口做到這一點——接口cannot provide任何方法實現。

是否可以在 Java 中創建抽像類和最終類?

  • 抽象和最終是相互排斥的概念。
  • 所以答案是否定的,我們不能在 Java 中使抽像類或方法成為最終的。
  • final 類是完整的類,不能進一步擴展。
  • 抽像類稱為不完整類,只能由其他具體類擴展,必須實現所有抽象方法。
  • 此外,沒有辦法,也不可能在最終類中有抽象方法。

是否可以從 Java 中的多個抽像類繼承?

  • Java 不支持多重繼承。
  • 在java中我們只能擴展一個類。
  • 在 Java 中,我們可以從許多來源實現接口。