我有這種接口接口和共享執行
public interface IColumn
{
bool IsVisible {get;set;}
bool IsGroupBy { get; set; }
Type CLRType { get; set; }
string GetGroupByString();
string GetFilterString();
}
和我有類將繼承它,第3個特性的實現是完全一樣的。
爲string GetGroupByString();
實施爲所有類的相同,除了2
,所以我提出的稱爲ColumnBase
抽象類繼承了IColumn
接口並實現其所有成員,並添加支持字段,因爲我需要實現INotifyPropertyChanged
。
並使我的類繼承自ColumnBase,並且我重寫了並非意味着相同的實現。我有一個非常有限的經驗與接口和抽象類,我的問題是,如果你有一個接口和一些類將繼承它,你意識到一些但不是所有的屬性和功能的實現是相同的,你是否創建了一個抽象類,並將默認實現並在具有特殊實現的類中重寫它?
是的,這似乎是一個很好的解決方案。將您允許覆蓋的方法標記爲「virtual」,並在子類中指定特定的子類行爲。 –
@JeroenVannevel但虛擬產生了什麼區別? – Kanka
它可以防止方法隱藏問題,這取決於你的變量是如何定義的。 [This](http://msdn.microsoft.com/en-us/library/aa645767(v = vs.71).aspx)應該說清楚。 –