关于抽象

本文探讨了计算机科学中抽象的重要性,列举了多个关键抽象概念,如指令集、文件、虚拟存储器、进程和虚拟机等,并解释了它们如何简化复杂的硬件和软件交互。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

抽象是计算机科学中最伟大的概念之一
《深入理解计算机系统》一书中说:

指令集是对CPU的抽象。文件是对输入、输出设备的抽象。虚拟存储器是对程序存储的抽象。进程是对一个正在运行的程序的抽象。虚拟机是对整个计算机的抽象(包括系统/处理器/程序)。

CPU集成电路硬件无比复杂, 但是我们写程序肯定不用接触这些硬件细节, 那样就累死了, 我们只要遵循CPU的指令集, 程序就可以正确的运行, 而不用关心指令在硬件层次到底是怎么运行的。

硬盘也是这样, 有磁道,柱面,扇区, 我们写应用层程序也不用和这些烦人的细节打交道, 在操作系统和设备驱动的配合下, 我们只需要面对一个个“文件”,打开,读取,关闭就行了。 操作系统会把逻辑的文件翻译成物理磁盘上的字节。

再比如为了实现数据的共享,数据的一致性和安全性,需要大量的,复杂的程序代码来实现, 每个应用程序都实现一份肯定不是现实的。 所以计算机科学抽象出了一个叫数据库的东西, 你只需要安装数据库软件, 使用SQL和事务就能实现多用户对数据的安全访问了。

摘自:
码农需要知道的“潜规则”

### C# 中抽象类的概念、特点及使用场景 #### 抽象类的定义 抽象类是一种不能直接实例化的类,其目的是为派生类提供统一的接口和部分实现。通过 `abstract` 关键字修饰的类即为抽象类,其中可以包含抽象方法(没有具体实现的方法)以及非抽象方法(提供了默认实现的方法)。抽象方法必须由派生类实现,而非抽象方法则可以被继承或重写[^2]。 #### 抽象类的特点 1. **不能实例化**:抽象类不能直接创建对象,只能通过派生类来实例化。 2. **包含抽象成员**:抽象类中可以包含抽象方法、属性或事件,这些成员没有具体的实现,必须由派生类提供具体实现。 3. **支持部分实现**:抽象类不仅可以声明抽象成员,还可以包含已实现的方法、字段、构造函数等。 4. **隐藏实现细节**:抽象类可以通过封装具体的实现逻辑,仅暴露必要的接口给外部使用。 5. **提供默认行为**:抽象类可以为派生类提供默认的行为实现,派生类可以选择性地重写这些行为。 #### 抽象类的使用场景 抽象类适用于以下场景: - 当需要为一组相关类定义通用接口时,可以使用抽象类来提供统一的接口和部分实现[^2]。 - 当希望隐藏实现细节并只暴露必要接口时,抽象类是一个合适的选择。 - 当需要在不同的实现类中共享一些常量或方法时,可以使用抽象类而不是接口[^1]。 #### 示例代码 以下是一个简单的抽象类示例,展示了抽象类的基本用法: ```csharp using System; namespace AbstractClassExample { // 定义抽象类 public abstract class Animal { // 抽象方法 public abstract void MakeSound(); // 非抽象方法 public void Sleep() { Console.WriteLine("Zzz..."); } } // 派生类 public class Dog : Animal { // 实现抽象方法 public override void MakeSound() { Console.WriteLine("Woof! Woof!"); } } // 派生类 public class Cat : Animal { // 实现抽象方法 public override void MakeSound() { Console.WriteLine("Meow! Meow!"); } } class Program { static void Main(string[] args) { Animal dog = new Dog(); dog.MakeSound(); // 输出: Woof! Woof! dog.Sleep(); // 输出: Zzz... Animal cat = new Cat(); cat.MakeSound(); // 输出: Meow! Meow! cat.Sleep(); // 输出: Zzz... } } } ``` #### 抽象类与接口的区别 - **成员限制**:接口只能声明方法或属性的原型,而不能包含常量或其他声明[^1]。抽象类则可以包含字段、常量、构造函数等。 - **实现方式**:接口的所有成员都必须由实现类提供具体实现,而抽象类可以包含已实现的方法。 - **继承限制**:C# 中一个类只能继承一个抽象类,但可以实现多个接口。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值