抽象類和接口
相同點:都不能被實例化,位于繼承樹的頂端滤奈,都包含抽象方法。
不同點:
1蜒程、設(shè)計目的:
接口體現(xiàn)的一種規(guī)范伺帘,類似與整個系統(tǒng)的總綱,制訂了系統(tǒng)各模塊應(yīng)該遵循的標準伪嫁,因此接口不應(yīng)該經(jīng)常改變,一旦改變對整個系統(tǒng)是輻射性的招刹。
抽象類作為多個子類的共同父類,體現(xiàn)的是一種模板式設(shè)計,可以當作系統(tǒng)實現(xiàn)過程中的中間產(chǎn)品龙助,已經(jīng)實現(xiàn)了系統(tǒng)部分功能。
2提鸟、使用不同:
(1)接口只能包含抽象方法,抽象類可以包含普通方法胸哥。
(2)接口里不能定義靜態(tài)方法,抽象類可以烘嘱。
(3)接口只能定義靜態(tài)常量屬性不能定義普通屬性,抽象類可以蝇庭。
(4)接口不包含構(gòu)造器,抽象類可以(不是用于創(chuàng)建對象而是讓子類完成初始化)哮内。
(5)接口里不能包含初始化塊,抽象類完全可以纹因。
(6)接口多繼承,抽象類單繼承(只能有一個直接父類)瞭恰。
總結(jié):接口所有方法全是抽象方法只能 public abstract修飾 (默認public abstract修飾 )狱庇,屬性默認public static final修飾。
抽象類除了包含抽象方法外與普通類無區(qū)別密任。
默認初始化,基本類型是 0 浪讳,布爾類型是 false ,引用類型為null