抽象類和接口
相同點:都不能被實例化,位于繼承樹的頂端,都包含抽象方法。
不同點:
1、設計目的:
接口體現的一種規(guī)范,類似與整個系統的總綱,制訂了系統各模塊應該遵循的標準,因此接口不應該經常改變,一旦改變對整個系統是輻射性的。
抽象類作為多個子類的共同父類,體現的是一種模板式設計,可以當作系統實現過程中的中間產品,已經實現了系統部分功能。
2、使用不同:
(1)接口只能包含抽象方法,抽象類可以包含普通方法。
(2)接口里不能定義靜態(tài)方法,抽象類可以。
(3)接口只能定義靜態(tài)常量屬性不能定義普通屬性,抽象類可以。
(4)接口不包含構造器,抽象類可以(不是用于創(chuàng)建對象而是讓子類完成初始化)。
(5)接口里不能包含初始化塊,抽象類完全可以。
(6)接口多繼承,抽象類單繼承(只能有一個直接父類)。
總結:接口所有方法全是抽象方法只能 public abstract修飾 (默認public abstract修飾 ),屬性默認public static final修飾。
抽象類除了包含抽象方法外與普通類無區(qū)別。
默認初始化,基本類型是 0 ,布爾類型是 false ,引用類型為null