所以你有一個接口和一個抽象類,它實現了接口中方法的一個子集。您還有一些類繼承了抽象類,並給出了抽象類不提供的方法的實現。java中的抽象類和接口最佳實踐
那麼這裏最好的做法是什麼?我正在討論的問題如下:
1)抽象類應該實現接口還是應該實現其子類?應該每班上課嗎?在我看來,只有抽象類應該。當然,所有的類都可以實現這個接口,但這似乎是多餘的,因爲抽象的孩子會繼承接口,因爲它們擴展了抽象類。 2)鑑於抽象類實現了接口的一部分,它是否也爲其未實現的方法聲明瞭抽象方法?在我看來,這是對的,但從某種程度上看,這似乎是多餘的,因爲抽象的孩子們需要實施這些方法才能編譯。
那麼你最好的做法是什麼?問題歸結爲:我們有一個接口來定義我們想要某些類所做的事情,我們在接口中定義了一些方法的子集來定義常見行爲,並且我們有幾種不同的方法來定義非常見的行爲。解決這個問題的最好方法是什麼?
+1,我會補充一點,如果我親眼看到一個實現了Foo的具體類,並且擴展了AbstractFoo,那麼我的第一個直覺就是Foo和AbstractFoo甚至可能沒有關係。隨着名字變得不那麼明顯,更多地引起混淆。 – PSpeed 2009-12-19 08:42:05
接口並不意味着進化和改變... – TofuBeer 2009-12-19 09:30:13
程序發展(因爲您添加新功能,修復錯誤,無論如何),這會導致底層構件(類,接口,方法...)發生變化。例如,你可能會決定一個方法需要一個額外的參數,所以你必須在聲明界面中改變它的簽名。 – 2009-12-19 10:11:29