c# - 抽象和继承有什么区别?

标签 c# oop inheritance abstraction

我在任何地方都找不到这个问题。根据我的理解,继承应该/可能是抽象的子集。

最佳答案

首先您应该意识到,在解释这些术语和概念时始终存在一些余地。以下是我的看法。

抽象是概念,继承是技术实现。


抽象通常是指省略(不必要的)细节。相反的方向就是具体化。泛化也经常在这种情况下使用,基本上与抽象含义相同。

在计算机科学的背景下,这可以用来描述几个想法:

  • 一是领域概念的建模。如 the class Car is an abstraction of real world automobiles. It uses an engine and four wheels to transport 1-5 people.显然,这远不及描述真实汽车的信息密度,但它很可能是该应用程序上下文所需的全部信息。

  • 另一种是用它来描述多个领域实体之间的概念关系:A Car is a Motorvehicle. A Bus is also a Motorvehicle. Both are used to transport people.机动车辆是汽车和公共(public)汽车的抽象。它描述了运送人员的想法,但省略了具体人数的细节。

  • 第三个是接口(interface)和实现之间的区别。该接口(interface)通过隐藏实现细节并仅表示可以交互的表面区域来抽象实现。


继承是在代码中实现抽象的一种方法。它描述了采用基类(这是更一般或更抽象的东西)、继承其所有功能/属性/行为/含义并添加一些更多细节(或覆盖一些现有的)来创建派生类的过程(这是更具体的事情)。

关于c# - 抽象和继承有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57336414/

相关文章:

c++ - 使用 ArrayList 实现选择排序

C#:对象作为参数传递时使用的隐藏基方法。任何解决方法?

c# - Wwise:播放特定的音频对象(用于对话)

c# - 显示另一个类中的所有项目

oop - 具体实现是否应该提供其实现的接口(interface)中不存在的任何公共(public) API?

javascript - 如何使用事件监听器的构造函数方法

c++ - 类多态性和相等运算符

c# - 构造函数抛出异常,实例和内存分配发生了什么?

c# - 如何关闭正在运行的Word文档实例? (C#)

c# - 在 LINQ 数据源/ GridView 中使用文本框值作为参数 : A value of type 'String' cannot be converted to type 'Double'