当前位置: 首页 > news >正文

第七章 面向对象

一、编程思想

1. 面向过程

将完整业务拆解为一步步执行的流程,按顺序逐步完成任务,聚焦执行步骤

2. 面向对象

先梳理程序中涉及的实体对象,以对象为核心,依靠对象自身属性与行为、以及对象间的协作来解决问题,聚焦实体与关系

二、类与对象

1. 对象

客观世界中一切事物都可看作对象,是实体在 Java 程序中的具象体现。 对象由两部分组成:

  • 属性:描述对象静态特征,使用变量表示;
  • 方法:描述对象动态行为、功能,使用方法表示。

2. 类与对象的关系

  • 类:多个同类对象的模板,统一描述这类对象具备的属性和行为;
  • 对象:类的实例,一个类可以创建出多个不同对象。

三、类的组成(开发重点)

类主要由成员变量(属性)成员方法构造方法三部分构成。

(一)成员变量(属性)

  1. 定义位置:类内部、所有方法外部。
  2. 语法格式
// 仅声明 数据类型 变量名; // 声明并直接赋值 数据类型 变量名 = 初始值;

注意:不能在类中单独写赋值语句,声明和赋值必须同行。
错误示例:

class A{ int value; value = 20; // 写法非法 }

取值原则:仅定义业务所需的属性即可,无需罗列对象所有特征。
默认初始值
成员变量拥有系统默认值,规则如下:
| 数据类型 | 默认值 |
| ---- | ---- |
| 整数类型(byte/short/int/long) | 0 |
| 浮点类型(float/double) | 0.0 |
| 字符类型(char) | 空字符 \u0000 |
| 布尔类型(boolean) | false |
| 引用类型 | null |
作用范围:当前整个类内有效。
命名规则:同一个类中,成员变量名不能重复;成员变量可与局部变量重名,同名时方法内优先使用局部变量。
成员变量 vs 局部变量

对比项局部变量成员变量
定义位置方法 / 代码块内部类内部、方法外部
默认值无默认值,必须先赋值再使用自带系统默认值
作用范围从定义处开始,到所属代码块结束整个类范围内有效
命名冲突作用域重叠时,不允许重名可与局部变量重名,局部变量优先级更高

(二)成员方法

描述对象具备的功能与行为,也叫成员方法。

  1. 定义位置:类内部、其他方法外部。
  2. 语法格式
修饰符 返回值类型 方法名(形参列表){ // 方法体:功能实现代码 }

区别于静态函数:普通成员方法不需要加static

  1. 组成拆分
  • 方法声明:修饰符、返回值类型、方法名、形参列表、异常,用来表明方法功能;
  • 方法实现:大括号内的代码,完成具体业务逻辑。

补充:一个方法可使用多个修饰符,修饰符顺序无要求。

方法重载(overload)
  1. 概念:同一个类中,多个方法名相同,但形参列表不同的一组方法。
  2. 判定规则(必须同时满足)
  • 方法名完全一致;
  • 形参列表不同(参数个数、数据类型、参数顺序任意一项不同即可);

仅参数名不同,不构成重载。 补充:返回值类型、修饰符、异常不参与重载判定。

  1. 调用规则 程序根据传入的实参自动匹配对应方法:优先精确匹配,匹配失败则向上兼容匹配,全部匹配失败则编译报错。
  2. 作用:提升代码通用性与灵活性,避免定义大量功能相似、名称不同的方法。

(三)构造方法(构造器)

类中一类特殊方法,主要用于创建对象并给成员变量初始化赋值

  1. 核心特点
  • 方法名必须和类名完全一致
  • 无返回值,连void也不能书写;
  • 支持方法重载;
  • 不能手动直接调用。
修饰符 类名(形参列表){ // 初始化代码 }
  1. 执行规则
  • 创建对象时由 JVM 自动调用,一个对象创建过程中,构造方法仅执行一次
  • 若类中未手动定义任何构造方法,JVM 会自动提供一个公共无参构造方法
  • 若类中已定义有参构造方法,JVM 不再自动生成默认无参构造。
  1. 开发建议 常规开发中,建议同时提供无参构造方法有参构造方法;有参构造的参数一般对应类的核心属性。

四、对象的创建与使用

1. 创建对象语法

类名 对象名 = new 类名();

2. 对象访问成员

  1. 操作属性
    // 赋值 对象名.属性名 = 值; // 取值 对象名.属性名;

2.调用方法

对象名.方法名(实参列表);

五、this 关键字(开发常用)

this代表当前对象,主要分两种用法。

1. this. 访问成员

  1. 用法:在成员方法、构造方法中使用,指代当前对象的成员。
    • this.属性名:访问当前对象的成员变量;
    • this.方法名(实参):调用当前对象的成员方法。
  2. 说明:多数场景下this.可省略;当成员变量与局部变量重名时,必须用this.区分成员变量

2. this () 调用本类构造方法

  1. 用法:仅能在构造方法中使用,用于调用本类其他构造方法。
    • this():调用本类无参构造方法
    • this(实参):调用本类有参构造方法
  2. 强制规则
    • 必须写在构造方法内第一行有效代码位置;
    • 禁止循环递归调用(多个构造方法不能互相嵌套调用)。

六、对象创建流程

  1. 分配堆内存空间,为所有成员变量赋予默认初始值
  2. 执行属性显式赋值(二次赋值);
  3. 执行构造方法(三次赋值,完成对象最终初始化)。

七、引用(理解难点)

  1. 概念:存储对象地址的变量,称为引用类型变量,简称引用。
  2. 存储内容:引用变量存的是对象在堆内存中的首地址
  3. 引用声明
类名 引用名; // 示例 Worker w;
  1. 空指针问题 若引用赋值为null,代表该引用没有指向任何对象;此时通过该引用调用属性 / 方法,编译正常,运行抛出NullPointerException空指针异常
  2. 赋值区别
  • 引用之间互相赋值:传递的是对象堆内存地址,多个引用可指向同一个对象;
  • 基本数据类型变量赋值:传递的是具体数值,变量之间互不影响。
  1. 使用场景:引用可作为方法形参、方法返回值、数组元素使用。

补充:JVM 内存分配简述

  • 栈空间:存储局部变量、引用变量(存放对象地址);
  • 堆空间:使用new创建的实体对象全部存放在堆中,对象的属性也在堆内存。
http://www.zskr.cn/news/1534370.html

相关文章:

  • 2026济宁建筑工程材料检测 CMA 机构哪家强?TOP 正规检测中心榜单 + 电话地址 - 中检检测集团
  • DeepSeek LeetCode 3256. 放三个车的价值之和最大 I Rust实现
  • 四川平头钻尾丝厂家众多,该如何选择合适的呢? - 资讯速览
  • 周一上线|瑞幸把咖啡做进 CLI,Fable 5 短暂登场,Stonk Rider 骑上 K 线图 - 小七
  • 珠海香洲黄金回收避坑指南:行情波动下如何安全变现 - 专业黄金回收
  • 基于认知建模与强化学习的沟通障碍仿真系统设计与实现
  • 南充全城贵金属回收优选门店 TOP5 黄金回收铂金回收白银回收正规商家地址汇总 - 中安检金银铂钻回收
  • 乌鲁木齐新市区黄金回收探店实测,6家正规机构行情全解析 - 专业黄金回收
  • 2026牡丹江商户高频选择的 5 家公共卫生第三方检测机构实地测评整理 公共场所 + 水质卫生检测 附电话地址 - 鉴安检测
  • 2026淮北建筑工程材料检测 CMA 机构哪家强?TOP 正规检测中心榜单 + 电话地址 - 中检检测集团
  • BabyRSA实战指南:从CTF入门到Python工具实现
  • 深圳南山区黄金回收火爆,919元高位变现正当时 - 专业黄金回收
  • 【Claude Code】PDF too large (max 100 pages, 32 MB). Try splitting it or extPDF 错误合集:过大、加密、无效文件的三种处理方案
  • 晋城全城贵金属回收优选门店 TOP5 黄金回收铂金回收白银回收正规商家地址汇总 - 中安检金银铂钻回收
  • StreamCap:40+平台直播自动录制终极指南,开播即录的智能助手
  • 深度解析橡胶Y型圈:原理、应用与高性能密封实践 - 热点速览
  • 2026抠图教程:好用的在线抠图网站推荐,人像/商品透明背景一键生成(保姆级指南) - AI测评专家
  • 厦门黄金回收实地暗访|奢二网等五家真实报价实测 - 讯息早知道
  • 2026有票都能被坑?青岛黄岛回收店大起底:损耗费流向何处 - 逸程
  • 大模型推理可靠性:从统计拟合到结构化诊断
  • 2026大连闲置LV牛角包变现,这家实体回收店不恶意放大磨损 - 逸程
  • 2026年AI商业化新拐点:Anthropic 470亿ARR、OpenAI 200亿月活、DeepSeek 500亿融资三巨头全景对比
  • OpenClaw本地智能体运行时安装全指南:Node.js+Git+npm深度实战
  • 2026南平旧金铂金白银回收高信赖门店 TOP 线下实体商家电话与门店地址一览 - 诚金汇钻回收公司
  • 佳木斯全城贵金属回收优选门店 TOP5 黄金回收铂金回收白银回收正规商家地址汇总 - 中安检金银铂钻回收
  • 深入解析MSC8251 PCIe控制器:从配置空间到寄存器编程实战
  • 【Kafka源码解读和使用指南】第86篇:Kafka Tool工具链深度解析——这些官方工具你都用对了吗
  • 【万字文档+源码】基于springboot+vue数字科技风险报告管理系统 -学习项目资料分享
  • 工业气体长期供应和临时采购怎么选:两广企业看供应商类型与合规边界 - 观域传媒
  • 3步搞定Windows右键菜单备份与恢复:ContextMenuManager完全指南