类与对象 | 低级别设计 (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

在这里:

  • corollamustang 是两个不同的 对象
  • 它们都来自同一个 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
相关推荐
专注于大数据技术栈2 小时前
java学习--String、StringBuilder、StringBuffer 的核心区别
java·学习
LiYingL2 小时前
USO“,一种基于分离和奖励学习的新方法:走在将风格和主题融为一体的图像生成的最前沿
人工智能·学习·计算机视觉
我命由我123452 小时前
Java 开发问题:包名 ‘com.my.compressimagetest‘ 与同名的类发生冲突
java·开发语言·学习·java-ee·intellij-idea·学习方法·intellij idea
⑩-2 小时前
Sleep与Wait的区别
java·开发语言
程序员阿鹏2 小时前
List和Set的区别
java·开发语言·数据结构·后端·list
ICscholar2 小时前
深度Q网络(DQN)及其变体双深度Q网络(DDQN)对比学习
人工智能·神经网络·学习
CHANG_THE_WORLD2 小时前
6.2.在汇编层面,数据本身没有类型
java·服务器·汇编
郑州光合科技余经理2 小时前
技术解析:如何打造适应多国市场的海外跑腿平台
java·开发语言·javascript·mysql·spring cloud·uni-app·php
IT 行者2 小时前
SpringBoot版本升级插件:用OpenRewrite 轻松升级 Spring Boot 2 到 4
java·spring boot·后端