类与对象 | 低级别设计 (LLD)

在面向对象编程(OOP)的核心中,有两个基本概念:

  1. 类(Class)
  2. 对象(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
相关推荐
Rain的Java大神之路几秒前
[特殊字符]8年Java老兵转型AI Agent:90%的人挂在同一个坑,根本不用学Python!(万字实战复盘,建议收藏)
java·数据库·人工智能·后端·python·spring·ai编程
高级程序源15 分钟前
springboot本地生活服务平台33399-计算机课程设计、毕业设计
vue.js·spring boot·python·mysql·小程序·flask·课程设计
高级程序源20 分钟前
springboot社区旧物回收管理系统25381-计算机课程设计、毕业设计
vue.js·spring boot·python·django·课程设计
高级程序源22 分钟前
springboot大学生体测系统72170-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·python·django·课程设计
IT研究室29 分钟前
最新计算机毕业设计选题推荐-基于spring boot的文学名著分享系统-网站-文档指导-Java-springboot
java·spring boot·课程设计
denlaku32 分钟前
JDK 13 新特性详解
java·开发语言
秋饼32 分钟前
Java 后端企业级 LLM 网关实战:Spring Cloud Gateway 构建统一大模型接入层
java·ai·技术分享·后端开发
Dark_Fairy34 分钟前
CMeKG_tools 知识图谱项目速成教程(13课共24H)
学习
悟乙己41 分钟前
AFAC2026 赛题四金融长文本 Agent竞赛学习笔记:关联技术(二)
笔记·学习·金融
今年下半年41 分钟前
【防重放】Spring Boot 通过自定义注解实现接口防重放
java·spring boot·自定义注解·防重放