C#考前复习知识点

DOCX · 42.9 KB · 2026-06-30

📚 C# 面向对象程序设计 – 考前复习知识点

> 来源:课堂录音转文字整理 | 考试时间:7号下午2:00

____________________________________________________________

📋 目录

  1. [考试基本信息](#一考试基本信息)
  2. [面向对象三大基石](#二面向对象三大基石三大基本特征)
  3. [访问修饰符](#三访问修饰符access-modifiers-必考)
  4. [类的核心成员](#四类class的核心成员)
  5. [创建类和对象](#五如何创建类和对象-核心考点)
  6. [构造函数](#六构造函数constructor-必考)
  7. [析构函数](#七析构函数destructor)
  8. [方法重载](#八方法重载method-overloading-核心考点)
  9. [继承](#九继承inheritance)

10. [多态](#十多态polymorphism)

11. [异常处理](#十一异常处理exception-handling)

12. [文件操作](#十二文件操作file-io-重点)

13. [考试题型与答题技巧](#十三考试题型与答题技巧)

14. [重点章节总结](#十四重点章节总结)

15. [老师最后叮嘱](#十五老师最后叮嘱)

____________________________________________________________

一、考试基本信息

项目

内容

|------|------|

____________________________________________________________

二、面向对象三大基石(三大基本特征)

**考试时间**

7号,下午第一场 2:00

**考试范围**

第2章(基础语法)、第3章(字符串和类)、第4章(类和对象)、第5章(继承和多态)

**核心章节**

**第2章** 和 **第4章** 是最基础的,考题中大量出现

**大题结构**

① 基础语法题 ② 数组题 ③ 编程题(30分,分值最大)

**小题类型**

选择题、判断题、程序填空题、程序改错题

**复习资料**

复习 PPT 已发到在线网络平台,可下载查看

> 考试必记封装(Encapsulation)、继承(Inheritance)、多态(Polymorphism)

1️⃣ 封装(Encapsulation)

  • 狭义理解:定义一个类,把行为和属性包装起来,只对外提供接口,隐藏内部实现。
  • 核心操作:创建类 → 在类中添加字段(属性)和方法。

2️⃣ 继承(Inheritance)

  • 语法:使用冒号 : 表示继承关系。
  • 子类可以访问父类中被 protected 修饰的成员。

3️⃣ 多态(Polymorphism)

  • 前提:必须基于继承关系(两个类之间有继承关系才能实现多态)。
  • 实现方式
  • 虚方法(virtual)+ 重写(override)
  • 抽象类 + 抽象方法的重写
  • 接口(Interface)
  • 多态能够提高程序的扩展性

____________________________________________________________

三、访问修饰符(Access Modifiers)⭐ 必考

访问修饰符

访问范围

说明

|-----------|---------|------|

`public`

**最大范围**

**所有类都可以访问**

`private`

**最小范围**

**仅本类内部可以访问**

`protected`

本类 + 子类

涉及继承关系时使用

`internal`

同一程序集内

考试较少涉及

> ⚠️ 答题技巧:如果不确定访问修饰符怎么写,建议不写(默认)。写错了反而不易得分。

>

> 语法位置:访问修饰符写在最前面,后面跟数据类型和字段名。

>

> `csharp

> public double length; // 访问修饰符 + 数据类型 + 字段名

>

____________________________________________________________

四、类(Class)的核心成员

一个类包含三大核心成员

1. 字段(Field)

  • 类的变量,直接声明。

不同数据类型的默认值(教材81页表4.1):

数据类型

默认值

|---------|-------|

2. 属性(Property)

整数(int)

`0`

浮点数(double/float)

`0.0`

字符串(string)

`null`

字符(char)

`'\0'`(空字符)

布尔(bool)

`false`

  • 类似字段,但可以控制读写权限(通过 get 和 set 访问器)。

private double area; // 字段(backing field)

public double Area // 属性

{

get { return area; } // get:返回字段值

set { area = value; } // set:传值赋值给字段

}

访问器

作用

|-------|------|

3. 方法(Method)

`get`

返回一个值(`return`)

`set`

传值赋值给字段(通过 `value` 关键字)

  • 定义格式:[访问修饰符] 返回类型 方法名(参数列表) { 方法体 }

访问类的成员

  • 使用点运算符(`.`)

Shape s1 = new Shape(); // 创建对象

s1.length = 1.0; // 对象名.字段名 = 值

____________________________________________________________

五、如何创建类和对象 ⭐ 核心考点

创建类

class Shape

{

// 字段

// 属性

// 方法

}

创建对象

类名 对象名 = new 构造函数();

// 示例:

Shape s1 = new Shape();

创建对象四步走

  1. 类名
  2. 对象名(如 s1)
  3. = 赋值 + new 操作符
  4. new 后跟构造函数(与类名相同 + 小括号)

> 💡 老师强调:即使不会写完整代码,也要先把类的基本结构写出来,就能得分!

____________________________________________________________

六、构造函数(Constructor)⭐ 必考

定义

构造函数是类中的一种特殊方法,满足三个条件即为构造函数:

条件

说明

|------|------|

语法

class Shape

{

public Shape() // 构造函数:无返回类型,方法名与类名相同

{

// 初始化代码

}

}

默认构造函数

① **方法名与类名相同**

完全一致

② **没有返回值声明**

连 `void` 都不能写

③ **方法体中不能有 `return` 语句返回值**

不能使用 `return` 返回数据

  • 每个类都有一个默认的无参构造函数(可以不写出来)。
  • 如果没写,系统自动提供。

构造函数重载

  • 可以存在多个构造函数,参数列表不同,提供不同的初始化方式。
  • 构造方法的访问修饰符一般采用 public。

____________________________________________________________

七、析构函数(Destructor)

作用

  • 当对象脱离作用域时自动调用,用于释放内存/资源(拆除机制)。
  • 和构造函数相互对应(创建 vs 拆除)。

语法

  • 在构造函数前面加一个波浪线 `~`

~Shape() // 析构函数

{

// 清理代码

}

默认析构函数

  • 每个类都有默认的析构函数,不需要手动写出

____________________________________________________________

八、方法重载(Method Overloading)⭐ 核心考点

定义

  • 在同一个类中,允许多个方法使用同一个方法名
  • 区分条件:参数的个数不同参数的类型不同

✅ 属于重载的情况

情况

示例

是否重载

|------|------|---------|

❌ 不属于重载的情况

参数类型不同

`Calculate(int)` vs `Calculate(double)`

✅ 是

参数个数不同

`Calculate(int)` vs `Calculate(int, int)`

✅ 是

参数个数和类型都不同

`Calculate(int)` vs `Calculate(double, int)`

✅ 是

  • 仅返回类型不同,参数列表完全相同 → 不算重载!

int Calculate(int a) // 方法1

double Calculate(int a) // 方法2 ❌ 仅返回值不同,不算重载!

> 核心记住:方法重载只区别于参数,与返回类型无关

____________________________________________________________

九、继承(Inheritance)

  • 语法:用冒号 : 表示继承

class Circle : Shape // Circle 继承自 Shape

{

// ...

}

  • 子类继承父类的非私有成员。
  • protected 修饰的成员在本类和子类中可以访问。

____________________________________________________________

十、多态(Polymorphism)

方式一:虚方法(Virtual)+ 重写(Override)

class Shape

{

public virtual double GetArea() // 虚方法(virtual)

{

return 0;

}

}

class Circle : Shape

{

public override double GetArea() // 重写(override)

{

return Math.PI * radius * radius;

}

}

方式二:抽象类 + 抽象方法重写

abstract class Shape

{

public abstract double GetArea(); // 抽象方法(没有方法体)

}

class Circle : Shape

{

public override double GetArea() // 重写抽象方法

{

return Math.PI * radius * radius;

}

}

⚠️ 易错点

易错点

说明

|-------|------|

____________________________________________________________

十一、异常处理(Exception Handling)

❌ **静态方法(static)不能被重写**

这是常见错误选项

✅ 多态必须**基于继承关系**

两个类之间必须有继承

✅ 需要配合 `virtual` + `override` 或 `abstract` + `override`

关键字不能少

  • 使用 try-catch-finally 结构。
  • 考试涉及较少(后两个标点章节),但需要了解基本用法。

____________________________________________________________

十二、文件操作(File I/O)⭐ 重点

命名空间

  • 文件操作类在 `System.IO` 命名空间下。
  • 使用前需引入:

using System.IO;

FileStream

  • 用于读写字节数据
  • 所在的命名空间也是 System.IO。

记忆技巧

> IO = Input + Output(输入输出),文件读写就是输入输出操作。

____________________________________________________________

十三、考试题型与答题技巧

1. 选择题

  • 考察基本概念:访问修饰符作用域、运算符优先级、表达式求值等。
  • 有些题不用学也能推理(如文件名包含 IO 就是输入输出)。

2. 判断题

  • 考察基础理论,稍微记忆即可。

3. 程序填空题 / 改错题

常见错误类型

错误类型

示例

正确写法

|---------|------|---------|

循环边界错误

`i <= length`

`i < length` 或 `i <= length-1`

变量未初始化

`sum` 没有赋初值

`int sum = 0;`

类型不匹配

`int / int` 赋值给 `double`

需要类型转换

语法错误

缺分号、缺括号

补全语法

命名错误

变量名或方法名写错

修正命名

> 💡 技巧:改错题即使不完全确定,把认为错误的地方写出来,把改正写在旁边,能得2分

4. 编程题(30分,分值最大)

答题模板

using System;

class Program

{

static void Main(string[] args)

{

// 创建对象

// 调用方法

}

}

> ⚠️ 无论如何不要空着! 老师反复强调:把基本结构写上去,意思对了就给分!

考试注意事项

建议

说明

|------|------|

____________________________________________________________

十四、重点章节总结

**不要作弊/抄袭**

被抓到记入教务处,影响学位证

**不要提前交卷**

必须坐够1小时,认真检查

**能写就写**

不会也要写点东西,老师会尽量给分

**仔细读题**

看清楚是虚方法重写还是抽象方法重写

**用黑色中性笔**

考试要求

章节

内容

重要程度

|------|------|---------|

运算符优先级

**第2章**

C# 基本语法(运算符、表达式、流程控制、数组)

⭐⭐⭐⭐⭐

**第3章**

字符串和类

⭐⭐⭐

**第4章**

类和对象(封装、访问修饰符、构造函数、方法重载)

⭐⭐⭐⭐⭐

**第5章**

继承和多态(虚方法、抽象类、接口、重写)

⭐⭐⭐⭐(大题多)

**第10章**

文件操作(FileStream、System.IO)

⭐⭐⭐(小题)

  • 主要用在表达式求解的选择题中。
  • 需要灵活使用运算符的优先级。

数组

  • 第2道大题专门考数组。
  • 改错题中常见数组边界错误(i < length 还是 i <= length)。

____________________________________________________________

十五、老师最后叮嘱

  1. 第2章和第4章是基础,考题中大量应用,不是直接考概念描述,而是作为应用来考
  2. 继承和多态多考大题(编程题、改错题),复习PPT中的程序案例(求素数、求累加和等)要自己看一遍。
  3. 作业还没交的抓紧补交,平时分40多分很重要。
  4. C# 基础语法和 C 语言很相似,C 学得好的人有优势。
  5. 拿到卷子不要慌,题目其实很简单,认真作答即可。
  6. 判断区间怎么写表达式的值if语句输出结果——这些都是选择题常考内容。
  7. 最终的大题是创建对象调用方法实现计算面积,要记住怎么创建类和怎么创建对象。
  8. 搞清楚题目到底让用虚方法重写还是抽象方法重写,这个非常重要。

____________________________________________________________

> 🎯 祝考试顺利!加油!