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

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

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

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

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

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

相关推荐
码流怪侠1 天前
2026年8月GitHub热榜深度拆解:Agent Skills席卷开源圈,一个“技能包“收割5万星
算法·程序员·github
两万五千个小时1 天前
DeepSeek Harness 从 0 开始:15 schedule 域(定时任务)
人工智能·程序员·架构
王中阳Go1 天前
业务代码凭什么不能直接调 Agent?——我在律所 AI 项目里做的 Harness 运行时治理
人工智能·后端·程序员
fightcrap1 天前
DeepSeek Harness:Cordis 插件树与 Agent 主链路
人工智能·后端·程序员
AI绘画哇哒哒2 天前
【建议收藏!】35岁后端血泪忠告,这3类人别硬转Agent(过来人亲述)
java·人工智能·后端·ai·程序员·大模型·agent
陈随易2 天前
Bun v1.4 更新总结:把浏览器、图片、定时任务和工程工具都装进一个运行时
前端·后端·程序员
demo007x2 天前
DSH harness 中的上下文管理探秘
程序员·agent·deepseek
yuhaiqiang2 天前
从这两件事就能看出 vibecoding 距离专业作品差距有多大?AI 能抹平技术,但抹不平品味 !
前端·后端·程序员
小贺儿开发2 天前
Unity 程序员编曲花絮:汪峰《河流》细节修复
科技·学习·unity·程序员·音乐·demo·写代码