回覆列表
  • 1 # Abnnjhg

    抽象類中可以有構造器(被子類呼叫使用,不能建立例項),而介面中不能;抽象類中可以包含非抽象方法,而介面在JDK1.8中只能有預設方法和靜態方法、抽象方法;抽象類中的方法許可權修飾符可以public、protected、預設、private,而介面中方法預設許可權修飾符是public abstract;抽象方法中可以有變數、常量,而介面中只能有靜態常量;抽象類是單繼承的,介面是多繼承的(當然,只能繼承介面)。至於使用上,儘量使用介面,除非有其它要求。抽象類就是為了繼承而存在的,如果你定義了一個抽象類,卻不去繼承它,那麼等於白白建立了這個抽象類,因為你不能用它來做任何事情。對於一個父類,如果它的某個方法在父類中實現出來沒有任何意義,必須根據子類的實際需求來進行不同的實現,那麼就可以將這個方法宣告為abstract方法,此時這個類也就成為abstract類了。包含抽象方法的類稱為抽象類,但並不意味著抽象類中只能有抽象方法,它和普通類一樣,同樣可以擁有成員變數和普通的成員方法。注意,抽象類和普通類的主要有三點區別:1、抽象方法必須為public或者protected(因為如果為private,則不能被子類繼承,子類便無法實現該方法),預設情況下預設為public。2、抽象類不能用來建立物件;3、如果一個類繼承於一個抽象類,則子類必須實現父類的抽象方法。如果子類沒有實現父類的抽象方法,則必須將子類也定義為為abstract類。在其他方面,抽象類和普通的類並沒有區別。參考資料:

  • 中秋節和大豐收的關聯?
  • 如何預防嬰幼兒捂熱綜合徵,尤其是和寶寶一起睡覺的時候?