27
我見過以下代碼佈局閱讀論壇和其他博客帖子,並經過修改以提出幾個問題。c#抽象類實現接口
public interface IService<T>
{
int Add(T entity);
void Update(T entity);
}
public abstract class ServiceBase<T> : IService<T>
{
public int Add(T entity) { ... }
public void Update(T entity) { ... }
}
public interface ICarService : IService<Car>
{
}
public class SomeBaseClass : ServiceBase<Car>, ICarService
{
public int Add(Car entity);
public void Update(Car entity);
}
我不明白的是讓抽象類實現接口的好處。對我來說,它只是有點重複,我不明白有一個抽象類實現接口的好處。
- 爲什麼不抽象類
ServiceBase<T>
只是定義爲不需要繼承IService接口?這是雙倍的代碼? - 爲什麼
SomeBaseClass
也暗示ICarService
? ServiceBase不應該足夠嗎?
有一件事我沒有通知是在SomeBaseClass我總是上說,「X隱藏了繼承的成員Y.使用new關鍵字,如果藏匿之意」的方法的警告。由於抽象類具有「添加」,服務接口具有「添加」,它不知道該怎麼做。 – fes
你最後一句中的「它」是什麼意思?編譯器警告絕對正確...... –