古法编程秘籍(一):什么是面向对象?别背定义,把 JSON 看懂就够了

Hi!这里是 JustHappy 这是专为编程初学者准备的专栏,哈哈,AI 时代更需要我们返璞归真!

每个学编程的人,几乎都会遇到一个词:面向对象

然后就会看到三个经典概念:封装、继承、多态 。 很多教材会告诉你:面向对象是一种编程思想。 但这句话其实和没说一样。 今天我们不用 Java,不用 C++,甚至不用代码。 只用 JSON,把面向对象彻底讲明白。

JSON 是一种用"键:值"的结构来表示和传输数据的通用文本格式,看起来像对象/字典,机器好解析、人也好读。

一、什么叫对象?

现实世界里有什么?人、汽车、手机、猫、狗......这些都叫对象。

因为它们都拥有两样东西:属性行为

例如一个人:

json 复制代码
{
  "name": "张三",
  "age": 18,
  "gender": "男"
}

这里的 name、age、gender,就是属性。

如果给它增加行为:

json 复制代码
{
  "name": "张三",
  "age": 18,
  "actions": [
    "eat",
    "sleep",
    "study"
  ]
}

那么这就是一个完整的人。

所以对象其实没那么神秘。一句话:

对象就是现实世界中的一个具体事物

二、什么叫封装?

很多教材会说:把数据和方法包装到一起。新手通常听不懂。

我们换个角度。

假设你的银行卡长这样:

json 复制代码
{
  "cardId": "6222xxxx",
  "balance": 5000
}

理论上谁都可以改余额:

json 复制代码
{
  "cardId": "6222xxxx",
  "balance": 999999999
}

那银行第二天就倒闭了。

所以真正的银行卡应该这样:

json 复制代码
{
  "cardId": "6222xxxx",
  "balance": "private",
  "methods": [
    "deposit",
    "withdraw"
  ]
}

用户看不到余额的存储方式,只能通过存钱、取钱两个入口操作。

这就是封装。

封装不是为了炫技,而是为了保护数据。

所以封装的本质是:

不让别人乱改我的数据。

三、什么叫继承?

现实世界中很多东西都有共同特征。

例如:

json 复制代码
{
  "type": "动物",
  "hasEyes": true,
  "canMove": true
}

猫是动物:

json 复制代码
{
  "type": "猫",
  "hasEyes": true,
  "canMove": true,
  "sound": "喵喵"
}

狗也是动物:

json 复制代码
{
  "type": "狗",
  "hasEyes": true,
  "canMove": true,
  "sound": "汪汪"
}

你会发现 hasEyes、canMove 重复出现了。

于是程序员说:这些公共部分抽出来。

变成:

json 复制代码
{
  "Animal": {
    "hasEyes": true,
    "canMove": true
  }
}

然后:

json 复制代码
{
  "Cat": {
    "extends": "Animal",
    "sound": "喵喵"
  }
}
json 复制代码
{
  "Dog": {
    "extends": "Animal",
    "sound": "汪汪"
  }
}

这就是继承。

继承的目的只有一个:代码复用

四、什么叫多态?

这是最容易把人绕晕的概念,其实特别简单。

先看两个对象:

json 复制代码
{
  "type": "Cat",
  "sound": "喵喵"
}
json 复制代码
{
  "type": "Dog",
  "sound": "汪汪"
}

它们都有一个动作:speak(),但是结果不同。

猫执行会得到"喵喵",狗执行会得到"汪汪"。

你会发现:虽然调用的是同一个动作,但表现不同。

这就是多态。

程序看到的是"动物.speak()",实际执行时是"猫 -> 喵喵,狗 -> 汪汪"。

所以多态本质上是:

同一个命令,不同对象有不同表现。

五、面向对象到底解决了什么问题?

如果没有面向对象,代码会越来越像:一堆变量、一堆函数、一堆 if else,最后没人知道谁是谁。

而面向对象做的事情非常简单:按照现实世界组织代码。

人归人,车归车,动物归动物。每个对象管理自己的数据和行为。

于是代码世界开始变得有秩序。

所以面向对象最核心的一句话其实不是"封装、继承、多态",而是:

用现实世界的思维管理程序世界。

相关推荐
demo007x11 小时前
让大模型活在你的鼠标旁:我用 Tauri 2 + Rust 打造了一款“反直觉”的 AI 全局划词效率神器
macos·程序员·llm
程序员海军12 小时前
AI 越来越强,为什么打工人反而越来越累、越来越内耗了?
前端·程序员·aigc
badhope17 小时前
同样写 AI,为什么有的文章 549 人看、有的只有 16 人看?——我用 40 篇掘金文章的真实数据复盘
程序员
今朝唯我少年郎2 天前
Codex安全盲区代码漏洞生成实测
python·程序员
kyriewen2 天前
我用 AI 写完一个需求后才发现,最难的不是 prompt,而是验收
前端·程序员·ai编程
酷酷的逗逗乐2 天前
前端转 Agent 开发 · 第六节
前端·程序员
爱勇宝2 天前
没有 Fn 键关触控板?我做了一个双击即用的 Windows 小工具
前端·后端·程序员
程序员cxuan3 天前
跟 WebUI 说再见了,最强 DeepSeek 桌面端来了!
人工智能·后端·程序员
codigger3 天前
用 AI 写代码,你知道它会把我的代码传去哪?
ai·程序员·编程·数据安全
程序员cxuan3 天前
DeepSeek V4.1 Flash 正式发布!
人工智能·后端·程序员