C#复习知识点-2(完整版)

MD · 8.9 KB · 2026-07-05

C# 期末复习知识点总结

来源:复习课录音整理
考试时间:7号(第7天)下午第1场 2:00
核心章节:第2章(基础语法)+ 第4章(类和对象)| 第5章(继承和多态)考大题


一、考试基本信息

项目 内容
考试日期 7号
考试时间 下午 2:00 第1场
核心范围 第2章(基本语法)、第4章(类和对象)→ 最核心
次重点 第5章(继承和多态)→ 大题居多
了解即可 第3章(字符串和类)、第6章(异常处理+文件操作,考得少)

考试题型

  • 选择题 — 表达式求值、运算符优先级、基本概念
  • 判断题 — 理论判断(记住特性即可答)
  • 程序填空 / 改错 — 给一段代码,填缺失部分或改错
  • 编程题(30分)重点大题,三套题:
  • 基础语法题(类似C语言的常规题)
  • 数组操作题
  • 面向对象编程题 — 创建类、创建对象、调用方法计算面积

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

三大基本特征:封装、继承、多态 —— 必记!

1. 封装(Encapsulation)

核心:将行为和属性包装在类中,对外只提供接口,隐藏内部实现。

创建类

class Shape
{
    // 字段、属性、方法
}
  • 类名 + 花括号,基本结构写出来就能得分
  • 不确定访问修饰符时不要写,写了反而容易错

类的三大核心成员

成员 说明
字段(Field) 存储数据的变量
属性(Property) 类似字段,但有 get / set,控制读写
方法(Method) 定义行为

属性(Property)的写法

private double length;
public double Length
{
    get { return length; }   // 读
    set { length = value; }  // 写
}
  • get → 返回值(return)
  • set → 赋值(value 关键字)

访问修饰符(重点!必记作用域)

修饰符 作用域
public 最大,任何类均可访问
private 仅本类可访问
protected 本类 + 子类可访问
internal 同一程序集内可访问

记住前三者的权限范围!
访问修饰符写在最前面


2. 继承(Inheritance)

  • 使用 冒号 : 表示继承
class Circle : Shape
{
    // Circle 继承 Shape
}

3. 多态(Polymorphism)

多态基于继承 —— 一定是两个类有继承关系才能重写

两种实现方式:

方式一:虚方法 + 重写

// 父类
class Shape
{
    public virtual double GetArea()  // virtual 关键字
    {
        return 0;
    }
}

// 子类
class Circle : Shape
{
    public override double GetArea()  // override 关键字
    {
        return Math.PI * radius * radius;
    }
}
  • 父类方法加 virtual
  • 子类方法加 override

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

// 抽象类
abstract class Shape
{
    public abstract double GetArea();  // 抽象方法,无方法体
}

// 子类
class Circle : Shape
{
    public override double GetArea()
    {
        return Math.PI * radius * radius;
    }
}
  • 抽象方法只能在抽象类中
  • 子类必须 override 实现

三、构造函数(Constructor)⭐ 重点

定义条件(三句话,背下来!)

  1. 方法名与类名相同
  2. 方法名前没有返回值声明(连 void 都没有)
  3. 方法体中不能使用 return 语句返回值
class Shape
{
    // 构造函数
    public Shape()
    {
        // 初始化代码
    }

    // 构造函数重载(不同参数)
    public Shape(double r)
    {
        radius = r;
    }
}

默认构造函数

  • 每个类都有默认的无参构造函数
  • 若自己写了构造函数,默认构造函数被覆盖

构造函数重载

  • 同一个类可以有多个构造函数
  • 参数个数不同 或 参数类型不同

四、析构函数(Destructor)

  • 对象脱离作用域时自动执行,释放内存
  • 写法:构造函数名前加 波浪线 ~
~Shape()
{
    // 清理代码
}
  • 每个类有默认析构函数,不用手动写

五、方法重载(Method Overloading)⭐ 重点

定义

C# 允许使用同一方法名定义多个方法,区别在于参数的个数或参数类型不同

属于重载的情况

// 基准方法
public double GetArea(double r)                  // 一个参数

// ✅ 参数类型不同
public double GetArea(int r)

// ✅ 参数个数不同
public double GetArea(double width, double height)

// ✅ 参数个数和类型都不同
public double GetArea(int width, int height)

❌ 不属于重载的情况

  • 只有返回类型不同,参数列表相同 → 不算重载!
// ❌ 这样不算重载,编译错误
public double GetArea(int r) { ... }
public int GetArea(int r) { ... }     // 错误!

重载只区别于参数(个数或类型),与返回值无关!


六、字段默认值

数据类型 默认值
整数(int) 0
浮点数(float/double) 0.0
字符串(string) null
字符(char) '\0'
布尔(bool) false

如果不给字段赋初值,系统会给默认值(参考课本 81 页表 4.1)


七、创建对象

Shape s1 = new Shape();

步骤: 1. 写类名 2. 写对象名 3. = new 关键字 4. 调用构造函数(与类同名 + 小括号)

访问成员用 . 点运算符s1.GetArea()


八、异常处理(了解即可)

try
{
    // 可能出错的代码
}
catch (Exception ex)
{
    // 处理异常
}
finally
{
    // 无论是否异常都会执行
}

九、文件操作(了解即可)

常用类

  • FileStream — 读写字节数据
  • File

命名空间

  • 文件操作:System.IO
  • 使用 FileStream 时必须引入:using System.IO;

常见判断题

"多态基于继承" ✅
"静态方法可重写" ❌ → 静态方法不能重写


十、老师叮嘱(考试技巧)⭐

1. 编程题不要空着!

  • 先把基本结构写上: csharp using System; class Program { static void Main(string[] args) { // ... } }
  • 写上就能得分,空着没法给分

2. 不确定的访问修饰符不要写

  • 写字段、方法时,不确认是 public/private 就不写,写了反而扣分

3. 仔细读题

  • 看清楚题目让用虚方法重写还是抽象方法重写

4. 改错题技巧

  • 常见的错误类型:
  • 数组越界:i < length 写成 i <= length
  • 变量未赋初值(如 sumaverage
  • 类型不匹配:int / int 结果赋给 double(不会自动转小数)
  • 命名错误

5. 选择题技巧

  • 运算符优先级 — 用于表达式求值(如 a / b 等)
  • 区间判断写法
  • 实在不会的题,按常识去推也能答出来

6. 判断题技巧

  • 理论判断,记住各特征的定义就能答

7. 禁止作弊!

  • 不要抄、不要作弊 → 影响学位证
  • 正常写,老师会尽量给分让你及格

8. 答题时间

  • 不要提前交卷——做满至少1小时,认真检查

9. 复习资料

  • 老师已上传复习PPT到在线平台,下载下来看
  • 复习PPT中的程序案例(求素数、求模、求1到某数的和等)
  • 上节课上机出的题也看一遍

10. 作业

  • 还有未交作业的同学尽快补交
  • 老师会逐一批阅,不要随便糊弄

十一、考试重点层级总览

优先级 内容 原因
⭐⭐⭐ 第2章:基本语法 基础,贯穿所有题型
⭐⭐⭐ 第4章:类和对象 创建类、创建对象、构造函数、方法重载 — 核心考点
⭐⭐ 第5章:继承和多态 大题居多,虚方法/抽象方法重写
异常处理 + 文件操作 考得少,了解即可
第3章:字符串和类 了解即可

最后的编程大题(30分)

大概率是: 1. 创建类(如 Shape) 2. 创建虚方法/抽象方法计算面积 3. 创建子类继承并重写 4. 创建对象,调用方法输出结果


祝考试顺利!能写的一定要写,别空着!