太平洋小島學java---抽象類和接口本質的區別

大家好,我又回來了,這個專欄主要會記錄一些java面試和算法的信息,希望能夠在明年秋招找到好的工作,加油!

接口的設計目的,是對類的行爲進行約束(更準確的說是一種“有”約束,因爲接口不能規定類不可以有什麼行爲),也就是提供一種機制,可以強制要求不同的類具有相同的行爲。它只約束了行爲的有無,但不對如何實現行爲進行限制。對“接口爲何是約束”的理解,我覺得配合泛型食用效果更佳。

而抽象類的設計目的,是代碼複用。當不同的類具有某些相同的行爲(記爲行爲集合A),且其中一部分行爲的實現方式一致時(A的非真子集,記爲B),可以讓這些類都派生於一個抽象類。在這個抽象類中實現了B,避免讓所有的子類來實現B,這就達到了代碼複用的目的。而A減B的部分,留給各個子類自己實現。正是因爲A-B在這裏沒有實現,所以抽象類不允許實例化出來(否則當調用到A-B時,無法執行)。

轉載知乎。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章