2010-02-16 46 views
0

我有這樣的場景:抽象類是一種很好的做法?

這兩clases這個屬性:

  • 表[ID,姓名,PARENT_ID]
  • 領域ID,姓名,CREATION_TIME,CREATION_DATE]

是否讓抽象類實現ID和NAME的屬性和屬性以便節省一些時間寫入代碼是一個好習慣;或者更好地重寫每個類的每個屬性和屬性?或者也許使用接口?

謝謝。

+1

dupe:http://stackoverflow.com/questions/56867/interface-vs-base-class –

+0

我不認爲這是重複的,他的問題更具體。我不明白這個問題是如何真正回答他的問題的。我的意思是它有幫助,但不是全部。 –

回答

2

我不認爲這兩種選擇都有意義。如果您使用抽象類,那麼當有人查看繼承自抽象類的類時,他們可能很難發現該信息在哪裏。這可能是關於繼承的最糟糕的部分:隱藏在繼承鏈中某個類的重要細節。

接口是類必須遵守的一種契約,所以通常它可以被其他一些機制使用。一個很好的例子是一個迭代器,這樣的類通常需要一個「下一個」方法。你保證一個類的實例可以被迭代,如果它訂閱了一個需要它具有「next」方法的接口。這樣一個想要遍歷實例的機制可以知道它會起作用。如果這對你想要做的事沒有意義,也許不要使用它。

+0

感謝您的回答,我同意100%的答覆。我不確定我的決定,這就是我在這裏發佈的原因。謝謝。 – lidermin

0

子類應該與他們的父類有一個「是」的關係。表和字段看起來是如此不同的實體,應該避免繼承。但另一方面,他們可以有一個共享基類,如DatabaseObject(或類似的東西),它實現了公共屬性。但是,如果這看起來過於人爲,我會在這些簡單的情況下避免繼承。

+0

嗨,我完全同意你的觀點,這個問題來自我的工作,在網上搜索後,我沒有找到正確的答案,所以這就是我在這裏發佈的原因。我想和你一樣,避免繼承。謝謝。 – lidermin

0

如果你想解決couse的代碼重用問題,你可以使用它。

但是,如果你可以使用它,從邏輯端,你必須undestand所有類擴展此abstarct類必須有smth共同。

相關問題