news 2026/7/27 19:42:39

【面向对象】面向对象基本概念:对象、类、消息

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【面向对象】面向对象基本概念:对象、类、消息

考点频率:★★★★★(年年必考,选择题的“送分题”也是“送命题”)
难度:⭐
建议:死磕“对象三要素”和“类与对象的区别”,这是你面向对象大厦的“地基钢筋”

1️⃣ 咱们先别背定义,来认识三个“同事”

假设咱们要开发一个“线上食堂订餐系统”,老板让你用面向对象的思想来设计。

这时候,面向过程的人会去想“先点餐、再支付、然后出票”这三个步骤。但咱们是面向对象的人,咱们得先看看这系统里有谁

你发现系统里有这么几位“同事”:

  1. 小明(一位具体的同学):他有名字、有余额、有想吃的菜。
  2. 宫保鸡丁套餐(一份具体的菜):它有价格、有辣度、有图片。
  3. 点餐机:它负责接收指令,处理逻辑。

请注意!当我们在写代码的时候,电脑里跑着的“小明”不是真人,而是占据了一块内存的“数据集合”。这块内存区域里记录着“小明”的属性(余额),并且知道“小明”能干嘛(支付)。

这块内存区域,在面向对象的世界里,就叫做——对象(Object)

2️⃣ 对象(Object):内存里的“活雷锋”

定义:对象是系统中用来描述客观事物的一个实体,它是构成系统的基本单位。它由一组属性方法(操作)组成。

一个对象之所以能被人认出来,是因为它具备三要素(软考选择题高频考点):

要素含义打个比方(小明同学)
属性(状态)对象拥有的数据,描述“它是什么样子的”余额:50元,菜名:宫保鸡丁
方法(行为)对象能执行的操作,描述“它能做什么”支付(),选择菜品()
标识(唯一性)每个对象在内存中都有独一无二的地址学号 001(哪怕有两个叫小明的,电脑也分得清谁是谁)

记住一句话对象 = 属性 + 方法 + 标识

3️⃣ 类(Class):对象的“模具”和“施工图”

现在问题来了。全公司不止小明一个人点餐,还有小红、小刚、小李。如果每次来一个新同事,咱们都得在电脑里给他开辟一块内存,重新写一遍“姓名、余额、支付方法”,程序员的头发早就掉光了。

这时候,类(Class)就出场了。

定义:类是一组具有相同属性相同方法的对象的抽象模板

打个比方:

  • :就是“同学”这张报名表(模板)。上面写着“姓名、学号、余额”,但具体内容空着。
  • 对象:就是根据这张报名表具体填写出来的纸质文件(实例)。上面写着“小明、001、50元”。

核心区别(软考必考死穴)

对比维度类(Class)对象(Object)
本质抽象的,是概念、是模板具体的,是实例、是实体
存在时间编译时(写代码的时候)存在运行时(程序跑起来)才在内存里分配空间
存储位置方法区/代码区堆内存(Heap)
关系类是对象的蓝图对象是类的实例(Instance)

一句话:你定义的是类,你new(创建)出来的是对象。没有类,你就造不出对象;没有对象,类就只是一堆躺在硬盘上的字符。

4️⃣ 消息(Message):对象间吵架的“标准话术”

有了类,有了对象,系统怎么跑起来呢?总不能各干各的吧。

定义:消息是对象之间进行通信的请求。一个对象要想让另一个对象干活(调用它的方法),唯一的办法就是给它发送一条消息

消息的三要素(软考常考点):

  1. 接收者:消息发给谁?(比如:把消息发给“点餐机”对象)
  2. 操作名:让对方做什么?(比如:“下单”)
  3. 参数:做这件事需要什么附加信息?(比如:{“菜品”: “宫保鸡丁”, “数量”: 1})

唯一性:面向对象中,消息传递是对象间唯一的交互方式。如果你不让A发消息给B,A就绝对不能直接去改B的余额(这就叫封装,咱们下篇细讲)。

5️⃣ 它们仨怎么配合工作的?(经典流程)

假设咱们写的程序跑起来了,咱们用代码逻辑理一遍:

  1. 定义类:程序员写了一行代码class Student { 余额; 支付() }。(此时只是一个概念)
  2. 创建对象:程序运行到小明 = new Student(),电脑在内存里划了一块地,把“余额=50”填进去。(此时对象活了)
  3. 发送消息:程序执行到点餐机.下单(小明, "宫保鸡丁")
    • 点餐机是接收者。
    • 下单是操作名。
    • 小明宫保鸡丁是参数。

6️⃣ 经典例题(对着答案看解析,别跳!)

例题1:以下关于面向对象中“对象”的叙述中,正确的是( )。

A. 对象是属性和方法的抽象
B. 对象的标识是动态的,可以随时改变
C. 对象的三要素是属性、方法和标识
D. 类是对对象的封装

解析:A说反了,才是属性和方法的抽象;B大错特错,标识是唯一的,一旦生成不能改变,就像你的身份证号;C正确;D说反了,对象是类的实例。选C


例题2:在面向对象系统中,对象之间进行通信的唯一方式是( )。

A. 函数调用
B. 消息传递
C. 共享内存
D. 全局变量

解析:面向对象强调封装,对象不能直接访问另一个对象的内部数据,只能通过发送消息(调用方法)来交互。选B

7️⃣ 记忆口诀

对象三要素,标识属性和方法。
类做模板存硬盘,对象实例在堆上。
对象通信靠消息,接收操作带参数。

8️⃣ 小测验(评论区对答案)

下面关于类和对象的说法中,错误的是( )。
A. 类是对象的模板,对象是类的实例
B. 一个类只能实例化一个对象
C. 对象在程序运行时才分配内存
D. 类是对具有相同属性和方法的对象的抽象

🔔本专栏日更,点击头像 → 专栏《软考中级高频考点》订阅,第一时间接收新内容

#软考中级 #软件设计师 #面向对象 #类与对象 #消息 #软考备考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/27 19:42:22

酶底物特异性预测:交叉注意力图神经网络的应用与突破

1. 酶底物特异性预测的革命性突破2025年发表在《Nature》上的EZSpecificity研究,彻底改变了我们对酶底物相互作用的理解方式。这个基于交叉注意力图神经网络(Cross Attention Graph Neural Networks)的预测系统,在测试集上达到了惊…

作者头像 李华
网站建设 2026/7/27 19:42:05

基于开源工具构建本地语音助手:从原理到实战

你有没有想过,对着电脑说句话,它就能帮你打开软件、搜索资料、写邮件,甚至执行复杂的自动化脚本?不是像手机语音助手那样只能查天气、设闹钟,而是真正能控制你的电脑,成为你的个人数字助理。过去&#xff0…

作者头像 李华
网站建设 2026/7/27 19:41:17

Windows 10 / 11 环境变量 (用户变量与系统变量)

Windows 10 / 11 环境变量 {用户变量与系统变量}1. 环境变量 (environment variables)1.1. 用户变量1.2. 系统变量1.3. Windows 10 - echo %path%1.4. Windows 11 - echo %path%1.5. 用户变量和系统变量的优先级1.5.1. 普通变量1.5.2. Path 变量2. Setting the path and variab…

作者头像 李华
网站建设 2026/7/27 19:41:11

C++ operator T()类型转换:原理、陷阱与ConfigValue实战

1. 项目概述&#xff1a;为什么我们需要自定义类型转换&#xff1f;在C的世界里&#xff0c;类型转换无处不在。从简单的int a 3.14;&#xff08;隐式转换&#xff09;&#xff0c;到显式的static_cast<double>(a)&#xff0c;编译器为我们处理了大量的类型适配工作。然…

作者头像 李华
网站建设 2026/7/27 19:37:04

LiveKit企业级WebRTC SFU架构设计与最佳实践

LiveKit企业级WebRTC SFU架构设计与最佳实践 【免费下载链接】livekit End-to-end realtime stack for connecting humans and AI 项目地址: https://gitcode.com/GitHub_Trending/li/livekit LiveKit是一个基于Go语言构建的开源WebRTC SFU&#xff08;Selective Forwar…

作者头像 李华
网站建设 2026/7/27 19:32:25

架构之争:so-vits-svc与RVC的技术哲学差异与实践选择

架构之争&#xff1a;so-vits-svc与RVC的技术哲学差异与实践选择 【免费下载链接】so-vits-svc SoftVC VITS Singing Voice Conversion 项目地址: https://gitcode.com/gh_mirrors/so/so-vits-svc 在语音转换技术快速演进的今天&#xff0c;so-vits-svc与RVC代表了两种截…

作者头像 李华