C#考前复习知识点
📚 C# 面向对象程序设计 – 考前复习知识点
> 来源:课堂录音转文字整理 | 考试时间:7号下午2:00
____________________________________________________________
📋 目录
- [考试基本信息](#一考试基本信息)
- [面向对象三大基石](#二面向对象三大基石三大基本特征)
- [访问修饰符](#三访问修饰符access-modifiers-必考)
- [类的核心成员](#四类class的核心成员)
- [创建类和对象](#五如何创建类和对象-核心考点)
- [构造函数](#六构造函数constructor-必考)
- [析构函数](#七析构函数destructor)
- [方法重载](#八方法重载method-overloading-核心考点)
- [继承](#九继承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();
创建对象四步走
- 写类名
- 写对象名(如 s1)
- = 赋值 + new 操作符
- 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)。
____________________________________________________________
十五、老师最后叮嘱
- 第2章和第4章是基础,考题中大量应用,不是直接考概念描述,而是作为应用来考。
- 继承和多态多考大题(编程题、改错题),复习PPT中的程序案例(求素数、求累加和等)要自己看一遍。
- 作业还没交的抓紧补交,平时分40多分很重要。
- C# 基础语法和 C 语言很相似,C 学得好的人有优势。
- 拿到卷子不要慌,题目其实很简单,认真作答即可。
- 判断区间怎么写、表达式的值、if语句输出结果——这些都是选择题常考内容。
- 最终的大题是创建对象调用方法实现计算面积,要记住怎么创建类和怎么创建对象。
- 搞清楚题目到底让用虚方法重写还是抽象方法重写,这个非常重要。
____________________________________________________________
> 🎯 祝考试顺利!加油!