抽象類 抽象類必須用 abstract 修飾,子類必須實現抽象類中的抽象方法,如果有未實現的,那麼子類也必須用 abstract 修飾。抽象類預設的許可權修飾符為 public,可以定義為 public 或 procted,如果定義為 private,那麼子類則無法繼承。抽象類不能創建對象 抽象類和普 ...
抽象類
抽象類必須用 abstract
修飾,子類必須實現抽象類中的抽象方法,如果有未實現的,那麼子類也必須用 abstract 修飾。抽象類預設的許可權修飾符為 public
,可以定義為 public 或 procted,如果定義為 private,那麼子類則無法繼承。抽象類不能創建對象
抽象類和普通類的區別
- 抽象類必須用public、procted 修飾(如果為private修飾,那麼子類則無法繼承,也就無法實現其抽象方法)。預設預設為 public
- 抽象類無法創建對象
- 如果一個子類繼承抽象類,那麼必須實現其所有的抽象方法。如果有未實現的抽象方法,那麼必須定義為 abstract
介面
介面中的變數隱式的使用 public static final
修飾,並且需要給出初始值。方法隱式的使用 public abstract
修飾(並且只能是 public ,如果是 private,procted,那麼就編譯報錯)。介面中的方法預設不能有具體的實現(JDK1.8開始可以有預設的實現)
介面和抽象類的區別
- 抽象類只能繼承一次,但是可以實現多個介面
- 介面和抽象類必須實現其中所有的方法,抽象類中如果有未實現的抽象方法,那麼子類也需要定義為抽象類。抽象類中可以有非抽象的方法
- 介面中的變數必須用 public static final 修飾,並且需要給出初始值。所以實現類不能重新定義,也不能改變其值。
- 介面中的方法預設是 public abstract,也只能是這個類型。不能是 static,介面中的方法也不允許子類覆寫,抽象類中允許有static 的方法