抽象類:
抽象類體現(xiàn)了數(shù)據(jù)抽象的思想,是實現(xiàn)多態(tài)的一種機(jī)制。
1.由abstract關(guān)鍵詞修飾的類稱之為抽象類。?
2.抽象類中沒有實現(xiàn)的方法稱之為抽象方法,也需要加關(guān)鍵字abstract。?
3.抽象類中也可以沒有抽象方法。?
4.抽象類中可以有已經(jīng)實現(xiàn)的方法,可以定義成員變量。
5.抽象類可以多層繼承。
接口:
接口提供的只是一種形式,而沒有具體的實現(xiàn)。同時實現(xiàn)該接口的實現(xiàn)類必須要實現(xiàn)該接口的所有方法,通過使用implements關(guān)鍵字實現(xiàn)。
1.由interface關(guān)鍵詞修飾的稱之為接口;?
2.接口中可以定義成員變量,但是這些成員變量默認(rèn)都是public static final的常量。?
3.接口中沒有已經(jīng)實現(xiàn)的方法,全部是抽象方法。?
4.一個類實現(xiàn)某一接口,必須實現(xiàn)接口中定義的所有方法。?
5.一個類可以實現(xiàn)多個接口。
區(qū)別:?
1.抽象層次不同。
????抽象類是對類抽象,而接口是對行為的抽象。抽象類是對整個類整體進(jìn)行抽象,包括屬性、行為,
? ? 接口卻是對類局部(行為)進(jìn)行抽象。
2.設(shè)計層次不同。
? ??抽象類是自下而上來設(shè)計的,要先知道子類才能抽象出父類,是自底向上抽象而來的。
? ? 接口不需要知道子類的存在,只需要定義一個規(guī)則即可,是自頂向下設(shè)計出來的。
3.實現(xiàn)不同。
比如 鳥和飛機(jī)都有飛的行為
用抽象類實現(xiàn):
父類:

飛機(jī):

鳥:

用接口實現(xiàn):
接口:

飛機(jī):

鳥:

鳥類有吃東西的方法。但用抽象類繼承,飛機(jī)也要實現(xiàn)吃東西的方法,顯然是不合理的,
所以從這里可以看出來,抽象類是抽象的共有的屬性或方法。而接口只是抽象了局部的一部分。
抽象類+接口:

鳥:

接口:
