2010-05-10 33 views
0

實現考慮下面的代碼的行爲:什麼,當你重新指定的接口已經由基類

public interface IExample { ... } 
public abstract class BaseExample: IExample { ... } 

public class ExampleA : BaseExample { ... } 
public class ExampleB : BaseExample, IExample { ... } 

是否有像例B編寫代碼的任何好處或缺點?

我的猜測是在派生類ExampleB中重新指定IExample是多餘的。我錯了嗎?我認爲派生類隱式地繼承了由它們的基類型實現的所有接口?

我們目前正在編寫像ExampleB這樣的東西,但它開始讓我誤解我們的一些派生類實現是如何變得冗長的。這裏的另一位開發人員說這很好,因爲它更好地聲明瞭類的意圖,並使代碼更具可讀性。但對我來說,它只是變得混亂。

回答

0

這將是多餘的是的。

你應該謹慎的另一件事是,當一個實現開始實現大量的接口時,它很可能會損害單一責任原則。很難說您是何時/如果是這種情況,而且這也取決於接口。