c# - 类层次结构设计——接口(interface)+基类与抽象类

标签 c# oop

有时我想知道我们确实有接口(interface)和抽象类有两个不同的原因:

  1. 如果您只是出于设计目的需要多个实现并在开发时针对某些内容进行编码,那么接口(interface)是我们的最佳选择。

  2. 如果您想重用代码,那么我们可能会选择抽象类。

但是,我看到了两者都不是的东西。

在某些设计中,它就像这样Interface > BaseClass > Child 类。

所以基本上一个基类实现了所有的方法,然后子类继承了它的定义。为什么我们不能使用抽象类来代替这个设置?或者这是一个有缺陷的设置?

最佳答案

最简单的推理是,如果对象具有 IS-A 关系,则使用(抽象)基类。就像马是一种动物。

如果有 CAN 关系,然后考虑接口(interface),比如如果鸭子可以飞,使用 IFlying 作为可以飞的鸭子的接口(interface)。

关于c# - 类层次结构设计——接口(interface)+基类与抽象类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9363421/

相关文章:

c# - 在 Telerik RadGrid for Winforms 中选择包括折叠组在内的多行

c# - 在 C#/.Net 中创建/切换桌面

c# - 在没有 OOP 的情况下,如何用 C 语言进行游戏开发?

java - 为什么接口(interface)优先于抽象类?

c# - 通过回滚 NUnit、Sql Server 和 UI 测试中的事务来维护数据库已知状态的正确方法

c# - Swagger 没有生成 swagger.json

list - Lua 函数在源代码中使用 "self"但没有元方法允许使用它们

oop - 什么是方法、属性和功能?

java - android: 尝试转换 fragment 时出现 ClassCastException

oop - Object.Do something() 或 Do something With(Object)