抽象類和接口都位于繼承樹的上層,它們具有以下相同點(diǎn):
代表系統(tǒng)的抽象層;
??? 當(dāng)一個(gè)系統(tǒng)使用一棵繼承樹上的類時(shí),應(yīng)該盡可能地把引用變量聲明為繼承樹的上層抽象類型,這樣可以提高兩個(gè)系統(tǒng)之間的松耦合。
都不能被實(shí)例化;
都能包含抽象方法。這些抽象方法用于描述系統(tǒng)能提供哪些服務(wù),但不必提供具體的實(shí)現(xiàn)。
抽象類與接口主要有兩大區(qū)別:
??? (1)在抽象類中可以為部分方法提供默認(rèn)的實(shí)現(xiàn),從而避免在子類中重復(fù)實(shí)現(xiàn)它們,提高代碼的可重用性,這是抽象類的優(yōu)勢(shì)所在;而接口中只能包含抽象方法。
???
??? 擴(kuò)展功能時(shí),在抽象父類中加入具體方法不會(huì)影響子類;但在接口中加入抽象方法會(huì)影響到所有實(shí)現(xiàn)類。
??? (2)一個(gè)類只能繼承一個(gè)直接的父類,這個(gè)父類有可能是抽象類;但一個(gè)類可以實(shí)現(xiàn)多個(gè)接口,這是接口的優(yōu)勢(shì)所在。
posted on 2006-11-29 00:40
EricWong 閱讀(208)
評(píng)論(0) 編輯 收藏 所屬分類:
Java