在面向对象编程(OOP)的核心中,有两个基本概念:
- 类(Class)
- 对象(Object)
它们是所有基于 OOP 的语言(如 Java、Python、C++、C# 或 TypeScript)的基础。
1. 什么是类?(What is a Class?)
类是一个蓝图、模板或配方,用于创建对象。
它定义了:
- 对象将包含哪些数据(属性 / 字段)
- 对象能执行哪些行为(方法 / 函数)
📌 关键点:
- 类本身不是对象。
- 它是用来创建多个具有相似结构但独立状态的对象的模板。
🧩 类比:蛋糕食谱(Recipe Analogy)
想象一个做蛋糕的食谱:
| 食谱部分 | 对应 OOP 概念 |
|---|---|
| 原材料(面粉、糖、鸡蛋) | 属性(Attributes / Fields) |
| 步骤(搅拌、烘烤、装饰) | 方法(Methods / Functions) |
👉 食谱本身不会产出一个真实的蛋糕 ------ 它只是告诉你如何制作。当你按照食谱做出一个蛋糕时,你就"实例化"了一个对象。
🔑 类的关键特性
一个类通常包括以下内容:
| 组成部分 | 说明 |
|---|---|
| 属性(Attributes) | 表示对象的状态或数据(例如:汽车的品牌、型号、速度) |
| 方法(Methods) | 表示对象的行为或可执行的操作(例如:启动、加速、刹车) |
| 封装性 | 将数据和操作数据的方法绑定在一起,隐藏内部细节 |
✅ 示例:Car 类(蓝图)
我们来定义一个简单的 Car 类,描述任何汽车对象应有的基本属性和方法。
💻 代码示例(以 Python 为例):
class Car:
def __init__(self, brand, model):
self.brand = brand # 属性:品牌
self.model = model # 属性:型号
self.speed = 0 # 属性:当前速度
# 方法:启动汽车
def start(self):
print(f"{self.brand} {self.model} 已启动。")
# 方法:加速
def accelerate(self):
self.speed += 10
print(f"当前速度: {self.speed} km/h")
# 方法:刹车
def brake(self):
if self.speed > 0:
self.speed -= 10
print(f"减速后速度: {self.speed} km/h")
这个 Car 类就是一个蓝图,告诉我们每个"汽车"对象应该长什么样、能做什么。
2. 什么是对象?(What is an Object?)
对象是类的一个实例。
它是根据类这个"蓝图"创建出来的真实存在的实体,你可以与之交互、存储数据、调用方法。
当你创建一个对象时,相当于说:
"拿这个类作为模板,给我造一个实实在在的东西。"
🔹 每个对象都具备:
- 自己的一份属性副本(数据独立)
- 共享类中定义的结构和方法
- 独立于其他对象运行
✅ 创建对象(实例化)
使用上面的 Car 类,我们可以创建具体的汽车对象。
💻 代码示例:
# 创建两个 Car 对象
corolla = Car("Toyota", "Corolla")
mustang = Car("Ford", "Mustang")
# 调用它们的方法
corolla.start() # 输出: Toyota Corolla 已启动。
corolla.accelerate() # 输出: 当前速度: 10 km/h
mustang.start() # 输出: Ford Mustang 已启动。
mustang.accelerate() # 输出: 当前速度: 10 km/h
📊 输出结果:
Toyota Corolla 已启动。
当前速度: 10 km/h
Ford Mustang 已启动。
当前速度: 10 km/h
在这里:
corolla和mustang是两个不同的 对象- 它们都来自同一个
Car类 - 各自拥有独立的
brand,model,speed值 - 可以分别调用相同的方法
🔄 类 vs 对象 总结
| 特性 | 类(Class) | 对象(Object) |
|---|---|---|
| 本质 | 抽象的模板 / 蓝图 | 具体的实例 / 实体 |
| 是否占用内存 | 不直接占用 | 占用内存(一旦被创建) |
| 是否可操作 | 不能直接操作 | 可以调用方法、修改属性 |
| 数量 | 通常一个类 | 可以有多个对象(从同一类创建) |
| 类比 | 房屋设计图 | 按图纸建造的真实房屋 |
🚪 下一步学习:枚举(Enums)
当你的程序需要一组固定的常量值(比如星期、状态码、颜色等),而这些值很少变化且每种只有一个实例时,就应该使用 枚举(Enum)。
👉 接下来我们将探索 Enums
📝 学习建议
- ✅ 动手写一个自己的类(如
Person,BankAccount) - ✅ 创建多个对象并测试它们是否彼此独立
- ✅ 使用调试器观察每个对象的内存状态
- ✅ 尝试添加私有属性和 getter/setter 方法(进阶)
🧩 总结
| 核心思想 | 内容 |
|---|---|
| 类 = 蓝图 | 定义了对象的数据和行为 |
| 对象 = 实例 | 根据蓝图创建的具体事物 |
| OOP 基石 | 所有现代编程语言都依赖这一模型 |
| 优势 | 提高代码复用性、可维护性和可读性 |
✅ 结论:理解"类"与"对象"的区别和联系,是掌握面向对象编程的第一步,也是构建复杂系统(尤其是低级别设计 LLD)的基石。
如果你想,我可以将上述内容导出为 PDF、Markdown 文件,或者继续翻译后续章节(如 Enums、Inheritance、Polymorphism 等)。是否需要?
html
编程资源
https://pan.quark.cn/s/7f7c83756948
更多资源
https://pan.quark.cn/s/bda57957c548