【发布时间】:2020-11-26 21:28:59
【问题描述】:
从技术上讲,多级继承的数量似乎没有限制。示例:D 类继承 C 类,C 类继承 B 类,B 类继承 A 类。但是,随着您继续继承,它们的名称开始变得复杂。
在我看来,事实上,拥有一个基类并使用接口会是一种更好的方法。
我遇到的问题是,对于接口,我必须在每个类中实现属性。使用基类,我只在一个地方实现它们。
在我的场景中,我有以下内容:
- 基类:
Animal - 接口:
RankeableByLevel(它具有允许对动物进行排名的附加属性)、FilterableByExpertise(它具有允许过滤动物的附加属性)。
有 10-15 个Animal 子类,大约 7-8 个可以排序和/或过滤。我不想在 7-8 个类中的每一个中实现接口(我认为“重复”太多)。
一种选择是创建一个名为AnimalRankeableByLevel 的基类和另一个AnimalRankeableByLevelAndFilterableByExpertise,特别是最后一个似乎太长了!
对于接口,我不得不过多地“重复”实现。 继承太多类,看起来会出错(名字太长,继承太多)。
解决办法是什么?
谢谢!
【问题讨论】:
-
将重复的实现包装到一个类中,并将接口调用委托给它。
-
@Lennart 谢谢,您能否提供一个示例,包括您如何命名(如果有命名约定)实现接口属性的类?
-
您可能还感兴趣,从 C# 8 开始,您可以为接口提供默认实现
-
这被称为“多级继承”,而不是“嵌套基类”。嵌套类是在另一个类内部声明的类(通常在包含类之外不可见)
标签: c# class inheritance interface