Skip to content
难度基础(★)
建议时长45分钟

10.1.2 对象与类相关概念

对象和类是面向对象的入口概念。对象是具体的,类是抽象的;对象有具体属性值,类定义这些对象应具有哪些属性和方法。

对象、类、实例

概念含义例子
对共同属性和行为的抽象模板StudentAccountOrder
对象运行时存在的具体个体学生张三、账户 A001、订单 O1001
实例由类创建出来的对象new Student("张三") 的结果
实例化由类生成对象的过程调用构造函数创建对象

类像模具,对象像用模具做出来的具体个体。类定义“应该有什么”,对象保存“具体是什么值”。

属性与方法

类中成员面向对象术语作用
数据成员属性、状态描述对象的静态特征
成员函数方法、操作、行为描述对象能做的动态动作

例如 Account 类可以有 balance 属性和 deposit()withdraw() 方法。不同账户对象可以共享同一套方法定义,但各自保存不同余额。

分析方向与实现方向

字幕里强调了一个方向差异:

场景方向
面向对象分析从现实世界抽象出对象,再从相似对象抽象出类
面向对象实现先写类,再由类实例化对象

这解释了为什么分析时我们先观察业务对象,编码时却先写类文件。

mermaid
flowchart LR
  R["现实业务"] --> O["识别对象"]
  O --> C["抽象出类"]
  C -.编码实现.-> Code["编写类"]
  Code --> I["实例化对象"]

状态与属性

状态可以理解为对象某一时刻一组属性的具体取值。例如一个账户对象的余额、冻结标志、信用等级共同决定它当前状态。状态不是完全独立于属性的东西,它通常由属性值体现。

术语关系
属性描述对象可能有哪些数据项
属性值某个对象当前具体取值
状态一组属性值组合形成的对象当前情况

因此考试中若问对象包含什么,属性/状态常可以归入对象内部;消息则更偏对象间交互。

可见性与封装

封装需要访问控制。不同语言细节不同,但软考中常见的访问修饰符可以这样理解:

修饰符访问范围记忆方式
private 私有只有本类内部方法可访问隐私,只给自己看
默认/包访问同一包内可访问不写修饰符时的常见情况
protected 受保护本类、子类或同包可访问,视语言而定给继承体系或包内开放
public 公有应用程序中其他对象可访问对外接口

考试若出现“所有方法都可以访问”,通常对应 public;“只有本类方法可以访问”,对应 private

例题

单选
“学生张三”在面向对象中更接近:
单选
若某成员只希望本类内部方法访问,通常应使用:

本节小结

类定义共同属性和方法,对象是类的具体实例。属性描述状态,方法描述行为。面向对象分析从现实到对象再到类,编码实现则先写类再实例化对象。封装通过访问控制隐藏内部细节,对外提供必要接口。