Logo
Section 1 / 9

什么是抽象?

本课程将介绍面向对象编程(OOP)中一个非常重要的概念,称为抽象。

导入

什么是抽象?

本课程将介绍面向对象编程(OOP)中一个非常重要的概念,称为抽象。

定义

抽象 指的是向用户暴露对象的必要功能,同时隐藏内部细节,以降低复杂性。可以这样理解:用户只需要知道 对象能做什么? 而不需要知道 对象是如何实现的?

现实世界中的例子

...

上图展示的应用程序中 用户 和 管理员 的关系,是 抽象 的一个良好现实示例。

  • 一名 用户 只能使用和交互应用程序的有限功能,即用户界面,并不了解应用程序的实现细节或开发方式。通常,用户只关心应用程序的功能。
  • 一名 管理员 可以访问应用程序的更多功能,没有任何信息对他隐藏。管理员可以监控用户的活动,了解应用程序的开发方式,并通过部署新功能来实现新增功能。

在上述示例中,抽象应用于用户,但不应用于管理员。

Course Image

让我们看另一个抽象的例子。考虑电视遥控器上的 音量 按钮。点击一次按钮,我们请求电视提高音量。假设该按钮调用了 volumeUp() 函数。电视会响应为产生比之前更大的声音。我们并不知道电视内部电路如何实现这一功能,但我们知道与电视音量交互所需的公开函数。

C# 中的一个例子

在 C# 中,可以很容易地体验到抽象的实际应用。让我们看看 C# System.Math 类的一个例子。这个类包含许多开发者熟知的内置方法,他们可以使用这些方法来获得便利。让我们在代码中使用几个方法来访问内置功能:

1class TestAbstraction { 2 3 public static void Main(string[] args) { 4 int min = Math.Min(15,18); // 找出两个数中的最小值 5 double square = Math.Pow(23,2); // 计算一个数的平方 6 7 Console.WriteLine("15 和 18 的最小值是: " + min); 8 Console.WriteLine("23 的平方是: " + square); 9 } 10 11}

在上述代码中:

  • 使用了 Math.Min() 这个静态方法,用于找出两个数中的最小值。
  • 使用了 Math.Pow() 这个静态方法,用于计算 23 的平方。

但用户无需了解这些方法在 Math 类内部的具体实现。

抽象数据类型

抽象数据类型(或类)是一种定义 要执行哪些操作? 而不是 如何执行这些操作? 的类型。

根据抽象数据类型的定义,用户只能了解这些数据类型的本质或功能。实现特定功能背后的具体过程是被隐藏的。

abstract 数据类型的例子可以是 C# 中的内置 Stack 类,用户知道它具有 Push()、Pop()、Peek() 等方法,但不知道这些方法是如何实现的。

如何实现抽象

在 C# 中,我们可以使用以下组件来实现抽象:

  • 抽象类
  • 接口

这两个主题将在本章接下来的课程中进行讲解。

abstract 修饰符

在 C# 中,几乎不可能在不使用 abstract 修饰符的情况下实现抽象。此修饰符表示被修饰的内容具有缺失或不完整的实现。

每当 abstract 修饰符用于类或方法时,这些方法或类仅指定 应执行的操作。在代码中使用这些方法或类的人必须处理这些方法或类的实现细节。这难道不正是抽象的定义吗?告诉某人应该做什么,而如何做则是另一回事。


现在我们已经完成了对抽象基础内容的讲解,下一课将介绍抽象类和方法。

多态性

抽象类和方法