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

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

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

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

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

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

相关推荐
七牛开发者2 小时前
让生产级 Agent 实现自进化:MOSS 的源码级实验
人工智能·机器学习·程序员
文心快码BaiduComate2 小时前
从个人效能到组织资产:文心快码企业版Agent Hub上线,提升团队AI编程效能
前端·后端·程序员
道友可好5 小时前
Git Worktree:一个仓库,多个分身
前端·后端·程序员
Hilaku5 小时前
前端工程师最终会变成 AI工程师?
前端·javascript·程序员
YuJie6 小时前
Claude Code 网络环境受限
程序员
hyunbar7777 小时前
Python 打包 EXE 极简指南
程序员
小小神仙7 小时前
ECC:怎么让 Claude Code 变成你的全栈搭档
程序员·aigc·ai编程
AskHarries7 小时前
什么样的用户愿意付费
程序员
程序员cxuan7 小时前
MiniMax M3 发布,据说接近 Opus 4.7?真的假的
人工智能·后端·程序员