继承两个类并分别从接口实现

时间:2019-05-14 04:41:11

标签: c# inheritance implementation

我有抽象的BaseClass和IClass接口。我创建了两个类Class(在不同的命名空间中)并从BaseClass继承。当我在Class类中实现接口而不在BaseClass类中实现接口时,这有意义吗?

1 个答案:

答案 0 :(得分:1)

我不明白为什么不这样;子类可能具有IClass的不同实现,它们仅符合IClass规范。您可能有另一个不实现IClass的Class实现,因此让BaseClass实现(或抽象化)并将其强制施加于其所有子代上没有任何意义。

这些是设计决策,而不是一成不变的规则,并且在很大程度上取决于您要建模的对象空间。如果所有类都具有某些共同点,请考虑使其成为基类的一部分。如果某些东西是专业知识,那么只有少数几个Class可以展示,请将其设置为接口,以便可以对该专业知识进行普遍对待

就示例而言,假设您正在创建一组集合(数据存储设备,例如Queue,List等-之所以选择它们,是因为它们被普遍使用,理解并且人们习惯于实现接口)。

您已决定所有集合都应支持添加和删除,但其中只有一部分可以枚举。添加/删除将是基类的抽象方法,与枚举相关的操作将在接口中指定。并非该基础的所有具体子类都实现该接口,因此并非所有这些子类都可以在声明“我将采取实现枚举的任何东西”的其他地方使用