第10章 - 面向对象基础
嗨,朋友!我是长安。
恭喜你完成了前9章的学习!现在我们要进入 C# 最核心的部分——面向对象编程(OOP)。这是一个全新的编程思想,理解了它,你的编程水平会有质的飞跃!
🤔 什么是面向对象?
**面向对象编程(Object-Oriented Programming, OOP)**是一种编程思想,把现实世界中的事物抽象成程序中的"对象"。
面向过程 vs 面向对象
面向过程:关注"怎么做"
// 洗衣服的过程
放衣服();
加洗衣粉();
加水();
启动洗衣机();
面向对象:关注"谁来做"
// 洗衣机对象来做
洗衣机.洗衣服();
🌟 面向对象的三大特性
1. 封装(Encapsulation)🎁
把数据和操作数据的方法包装在一起,隐藏内部细节。
类比:手机,你只需要知道怎么用,不需要知道内部电路。
2. 继承(Inheritance)👨👦
子类可以继承父类的属性和方法,实现代码复用。
类比:儿子继承父亲的财产,但也可以有自己的东西。
3. 多态(Polymorphism)🎭
同一个方法,不同对象有不同的实现。
类比:动物都会"叫",但狗叫"汪汪",猫叫"喵喵"。
📦 类和对象
类(Class)- 图纸/模板
类是对象的模板,定义了对象的属性和行为。
类比:
- 汽车设计图 → 类
- 具体的一辆汽车 → 对象
对象(Object)- 实例
对象是类的实例,是具体存在的事物。
// 定义一个类
class Car
{
// 属性(特征)
public string Brand; // 品牌
public string Color; // 颜色
public int Speed; // 速度
// 方法(行为)
public void Start()
{
Console.WriteLine($"{Brand} 汽车启动了!");
}
public void Run()
{
Console.WriteLine($"{Brand} 汽车以 {Speed} km/h 的速度行驶");
}
}
// 使用类创建对象
class Program
{
static void Main(string[] args)
{
// 创建对象
Car myCar = new Car();
myCar.Brand = "宝马";
myCar.Color = "黑色";
myCar.Speed = 120;
// 调用方法
myCar.Start(); // 宝马 汽车启动了!
myCar.Run(); // 宝马 汽车以 120 km/h 的速度行驶
// 创建另一个对象
Car yourCar = new Car();
yourCar.Brand = "奔驰";
yourCar.Color = "白色";
yourCar.Speed = 150;
yourCar.Start();
yourCar.Run();
}
}
🎯 为什么要用面向对象?
1. 代码复用
定义一次,可以创建多个对象。
2. 易于维护
修改类的定义,所有对象自动更新。
3. 符合人类思维
现实世界就是由各种对象组成的。
4. 模块化
每个类负责一个功能,清晰明了。
💡 实战示例:学生类
using System;
namespace StudentDemo
{
// 定义学生类
class Student
{
// 属性
public string Name; // 姓名
public int Age; // 年龄
public string StudentId; // 学号
public double Score; // 成绩
// 方法:自我介绍
public void Introduce()
{
Console.WriteLine($"大家好,我叫{Name},今年{Age}岁,学号是{StudentId}");
}
// 方法:学习
public void Study(string subject)
{
Console.WriteLine($"{Name}正在学习{subject}");
}
// 方法:考试
public void TakeExam()
{
if (Score >= 60)
{
Console.WriteLine($"{Name}考了{Score}分,及格了!");
}
else
{
Console.WriteLine($"{Name}考了{Score}分,不及格...");
}
}
}
class Program
{
static void Main(string[] args)
{
// 创建学生对象
Student student1 = new Student();
student1.Name = "张三";
student1.Age = 18;
student1.StudentId = "2024001";
student1.Score = 85;
student1.Introduce();
student1.Study("C#编程");
student1.TakeExam();
Console.WriteLine("\n-------------------\n");
// 创建另一个学生对象
Student student2 = new Student();
student2.Name = "李四";
student2.Age = 19;
student2.StudentId = "2024002";
student2.Score = 55;
student2.Introduce();
student2.Study("数学");
student2.TakeExam();
Console.ReadKey();
}
}
}
输出:
大家好,我叫张三,今年18岁,学号是2024001
张三正在学习C#编程
张三考了85分,及格了!
-------------------
大家好,我叫李四,今年19岁,学号是2024002
李四正在学习数学
李四考了55分,不及格...
📚 面向对象的核心概念
| 概念 | 说明 | 示例 |
|---|---|---|
| 类 | 对象的模板 | class Car |
| 对象 | 类的实例 | Car myCar = new Car() |
| 属性 | 对象的特征 | Brand, Color, Speed |
| 方法 | 对象的行为 | Start(), Run() |
| 封装 | 隐藏细节 | 下一章详细讲 |
| 继承 | 代码复用 | 第12章详细讲 |
| 多态 | 灵活实现 | 第13章详细讲 |
🎨 类比总结
让我用一个完整的类比帮你理解:
- 类 = 建筑设计图
- 对象 = 具体的建筑物
- 属性 = 建筑物的特征(高度、颜色、用途)
- 方法 = 建筑物的功能(居住、办公)
- 封装 = 只开放门窗,内部结构不可见
- 继承 = 现代建筑继承传统建筑的元素
- 多态 = 不同建筑有不同的使用方式
📝 本章小结
- 面向对象是一种编程思想
- 类是对象的模板,对象是类的实例
- 类包含属性(特征)和方法(行为)
- 面向对象有三大特性:封装、继承、多态
- 使用
new关键字创建对象 - 面向对象让代码更易维护和复用
💡 长安的建议
面向对象是个全新的概念,刚开始可能不太好理解。建议你:
- 多看例子:看更多的代码示例
- 多想类比:联系现实生活中的事物
- 多写代码:自己创建几个类
- 不要着急:慢慢理解,后面会越来越清晰
🎯 下一步
理解了面向对象的基本概念后,下一章我们要深入学习类与对象的创建和使用!
💪 练习题
- 创建一个"书"类,包含书名、作者、价格属性,和一个显示信息的方法
- 创建一个"手机"类,包含品牌、型号、价格属性,和打电话、发短信的方法
- 创建三个不同的学生对象,调用它们的方法
- 用自己的话解释什么是类和对象
答案提示
class Book { public string Title; public string Author; public double Price; public void ShowInfo() {...} }class Phone { public string Brand; public string Model; public double Price; public void Call() {...} public void SendMessage() {...} }- 使用
new Student()创建多个对象 - 类是模板,对象是根据模板创建的实例
