【发布时间】:2011-11-27 19:45:02
【问题描述】:
我最近问过这个question 我是否应该实现接口或抽象类。 Scottm 给出的答案建议我同时使用两者,但我仍然不确定我为什么要这样做。从长远来看有好处吗?这样做有什么好处?
以下是我认为的一些好处:
- 我可以在不破坏实现的情况下向抽象类添加方法,但如果使用接口,我会破坏它。
- 我可以继承多个接口,但只能继承一个抽象类
- 抽象类允许我定义标准行为,但如果我愿意,可以覆盖它。
这是另一个问题。如果我实现一个接口,该接口应该只包含所有子类都可以做的方法吗?如果我需要额外的逻辑,我会创建一个具有更具体实现的具体类或抽象类。
【问题讨论】:
-
我想知道.net 5.0 是否可以通过允许接口与静态基类配对来缓解限制,并允许接口使用静态类成员声明方法和属性的默认实现。我认为这样做不会有任何重大的技术困难(每个接口成员都会获得一个 vtable 插槽,但有些会指向静态方法),它既可以使接口可扩展,又可以消除对“合作伙伴”的需求提供诸如 Enumerable
.Empty 之类的静态类(与 IEnumerable .Empty 相对)
标签: .net oop inheritance interface abstract-class