古法编程秘籍(一):什么是面向对象?别背定义,把 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,最后没人知道谁是谁。

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

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

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

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

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

相关推荐
Hilaku5 小时前
Vue 和 React 真正的差距,不在语法,而在团队犯错成本
前端·javascript·程序员
SamDeepThinking6 小时前
Vibe Coding最重要的是Spec
后端·程序员·ai编程
xyy12311 小时前
多阶段构建、数据持久化与前后端分离部署
程序员
谢文峰12 小时前
ChatGPT/Codex 无法开启远程控制?一次 Clash TUN 与 aTrust 网段冲突排查实录
程序员
SamDeepThinking12 小时前
一次线程池线上故障复盘:四层防线如何避免数据丢失
java·后端·程序员
xyy12312 小时前
Linux 核心命令
程序员
SimonKing13 小时前
Base62编码生成6位不重复短码的背后设计
java·后端·程序员
Hilaku1 天前
为什么 AI 写前端时,总是优先选择 React,而不是 Vue?
前端·javascript·程序员
猿的天空1 天前
GPT-5.6拆成三段,智能变成了可选购配置
人工智能·gpt·计算机·ai·程序员·大模型·智能体
阿里嘎多学长1 天前
2026-07-09 GitHub 热点项目精选
开发语言·程序员·github·代码托管