在Java中,如何实现封装

news/2025/10/21 11:58:38/文章来源:https://www.cnblogs.com/ll55522201/p/19154721

在 Java 中实现封装主要通过 访问修饰符 和 getter/setter 方法 来实现,核心步骤是"隐藏属性、暴露接口"。具体实现方式如下:

一、使用访问修饰符隐藏类的成员

Java 提供了 4 种访问修饰符,用于控制类成员(属性和方法)的访问范围,从而实现隐藏:

修饰符 访问范围 封装用途
private 仅当前类内部可访问 完全隐藏核心属性/方法
default 同一包内可访问(无修饰符时默认) 包内可见,对外隐藏
protected 同一包内或子类可访问 允许子类访问,对外隐藏
public 任何地方可访问 暴露公共接口(如 getter/setter)

封装的核心原则
将类的属性(数据)声明为 private(私有),禁止外部直接访问;
将操作属性的方法声明为 public(公开),作为外部交互的接口。

二、通过 getter/setter 方法暴露访问接口

对于私有属性,提供公共的 getXxx() 方法(获取属性值)和 setXxx() 方法(设置属性值),在方法中可以添加校验逻辑,确保数据合法性。

实例:封装一个 Student 类

public class Student {// 1. 将属性声明为 private(隐藏数据)private String name;  // 姓名private int age;      // 年龄private double score; // 成绩// 2. 提供 public 的 getter 方法(获取属性值)public String getName() {return name;}// 3. 提供 public 的 setter 方法(设置属性值,可添加校验)public void setName(String name) {// 例如:限制姓名不能为 null 或空字符串if (name != null && !name.trim().isEmpty()) {this.name = name;} else {System.out.println("姓名不能为空!");}}public int getAge() {return age;}public void setAge(int age) {// 例如:限制年龄在 0-150 之间if (age >= 0 && age <= 150) {this.age = age;} else {System.out.println("年龄必须在 0-150 之间!");}}public double getScore() {return score;}public void setScore(double score) {// 例如:限制成绩在 0-100 之间if (score >= 0 && score <= 100) {this.score = score;} else {System.out.println("成绩必须在 0-100 之间!");}}// 4. 其他业务方法(也可封装内部逻辑)public void showInfo() {System.out.println("姓名:" + name + ",年龄:" + age + ",成绩:" + score);}
}
 
 

三、使用封装后的类

外部只能通过 setXxx() 方法修改属性,通过 getXxx() 方法获取属性,无法直接操作私有属性:

public class TestStudent {public static void main(String[] args) {Student s = new Student();// 错误:无法直接访问 private 属性// s.name = "张三"; // 正确:通过 setter 方法设置属性(会触发校验)s.setName("张三");   // 合法s.setAge(200);      // 触发错误提示:年龄必须在 0-150 之间s.setAge(18);       // 合法s.setScore(95.5);   // 合法// 通过 getter 方法获取属性System.out.println("姓名:" + s.getName()); // 输出:张三// 调用业务方法s.showInfo(); // 输出:姓名:张三,年龄:18,成绩:95.5}
}
 
 

四、封装的进阶:隐藏方法实现

除了属性,方法也可以被封装。例如,将类内部的辅助方法声明为 private,只暴露必要的 public 方法给外部使用:

public class Calculator {// 公开方法:对外暴露的接口public int add(int a, int b) {return calculate(a, b, "+");}public int subtract(int a, int b) {return calculate(a, b, "-");}// 私有方法:内部实现细节,对外隐藏private int calculate(int a, int b, String operator) {switch (operator) {case "+": return a + b;case "-": return a - b;default: throw new IllegalArgumentException("不支持的运算符");}}
}
 
 

外部只能调用 add() 和 subtract(),无需关心 calculate() 的实现,即使未来修改 calculate() 的逻辑,也不会影响外部调用。

总结

Java 实现封装的核心步骤:

  1. 用 private 修饰属性,禁止外部直接访问;
  2. 提供 public 的 getter/setter 方法,控制属性的读写逻辑;
  3. 用访问修饰符隐藏内部方法实现,只暴露必要的公共接口。

通过这种方式,既能保证数据安全,又能降低代码耦合度,使程序更易于维护。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/942162.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025年10月超声波清洗机厂家排行:十家主流企业深度评测

“生产线节拍越来越快,人工擦拭已经跟不上良率要求;环评收紧,委外清洗费用又节节攀升。”——这是最近三个月里,我在东莞、苏州、成都三地调研时听到最多的两句话。2025年第三季度,工信部《精密制造清洗环节调研简…

2025年10月美白精华产品排行:从成分到肤感全维度评测

入秋之后,紫外线强度虽有所下降,但“晒后反黑”“糖化暗黄”成为社交平台高频提问。国家药监局2024年化妆品注册备案年报显示,美白淡斑类精华备案量同比增23%,其中“温和不刺激”“28天见效”成为检索热词。小红书…

Koodo Reader快捷键大全:提升阅读效率的键盘执行技巧

Koodo Reader快捷键大全:提升阅读效率的键盘执行技巧pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas&qu…

2025年10月美白精华产品推荐榜:十款热门单品深度对比

入秋以后,紫外线强度虽降,但夏季累积的暗沉、晒斑开始浮现,不少用户把“提亮肤色、淡化黄气”写进十月护肤清单。小红书后台数据显示,九月底“美白精华”搜索量环比上升42%,其中“敏感肌可用”“抗糖减黄”“不反…

详细介绍:rabbitMQ续谈

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025年10月超声波清洗机厂家推荐榜:十强对比评测

把“超声波清洗机厂家”六个字敲进搜索框的那一刻,你大概率正被以下场景包围:产线升级急需替代人工的自动化清洗方案,实验室要满足微米级洁净度,或是珠宝车间想在不伤表面的前提下提升出货速度。无论哪种场景,核心…

2025年10月不锈钢水箱厂家推荐榜:十强对比评测

正在打开自来水龙头的小区物业经理、筹备酒店热水系统的工程负责人、或是为新建厂房规划消防蓄水的业主,都会面临同一个问题:不锈钢水箱厂家这么多,到底选谁才放心?2025年,住建部《二次供水工程技术规程》更新后,…

2025年10月长白山旅游度假酒店推荐:口碑榜与实景对比排行

国庆长假刚过,长白山已进入“金秋+初雪”交替的摄影黄金期,也是错峰度假性价比最高的窗口。很多用户把“住得舒服”列为长白山行程的第一优先级:白天徒步、滑雪、泡温泉,晚上想回到房间就能看见林海或星空,最好下…

2025 年最新推荐北京 / 陕西百度官网认证代理商榜单:全方位评估服务实力助企业选靠谱机构

引言 在互联网深度融入企业发展的当下,官网作为品牌展示与业务拓展的核心窗口,其真实性与可信度直接影响消费者决策,而百度官网认证正是提升官网公信力的关键举措。然而当前市场上百度官网认证服务商数量繁杂,部分…

2025年10月不锈钢水箱厂家评价榜:实力参数横向对比

把“不锈钢水箱”这五个字敲进搜索框的人,往往正处在三种场景:新建小区泵房要验收、老酒店水箱锈穿急换、工厂扩建要增容。他们共同的关键词是“耐用”“合规”“别漏水”,共同的焦虑是“厂家太多,谁真靠谱”。202…

2025年10月长白山度假酒店推荐:民俗与国际范双榜对比

计划十月走进长白山的人,多半带着同一份期待:在霜染林色的季节里,把城市节奏切换成松涛与温泉。你可能是摄影爱好者,想赶在第一场雪前拍下天池的镜面;也可能是亲子家庭,希望找一处孩子能奔跑、老人能泡汤的安全聚…

Reactor 模式结合 epoll

一、核心概念Reactor 模式事件驱动架构 核心组件:Event Demultiplexer(epoll) Event Handler(事件处理器) Reactor(事件循环)epoll 机制Linux 高效 I/O 多路复用 三种系统调用:epoll_create():创建实例 epoll…

2025年10月不锈钢水箱厂家榜单:十家参数对比与选购要点

把“不锈钢水箱厂家”六个字输入搜索框,跳出的页面越翻越长,询价电话越打越乱,这是多数采购经理、项目水电工程师、物业配套负责人共同的感受。住建部2024年《二次供水设施改造工作简报》显示,全国待改造屋顶水箱约…

基于 RoBERTa + 多策略优化的中文商品名细粒度分类 - 实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025年10月不锈钢水箱厂家排行:十家对比评价

正在施工的项目经理、准备改造二次供水的小区物业、新建酒店的水电工程师,在搜索引擎里反复输入“不锈钢水箱厂家”时,往往带着同一串焦虑:既要保证水质安全,又得控制预算;既要赶工期,又怕后期漏水被投诉;政策要…

深入解析:开源项目net-radio-archive常见问题解决方案

深入解析:开源项目net-radio-archive常见问题解决方案pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas&q…

skynet.dispatch 使用详解

skynet.dispatch 是 Skynet 框架中用于注册消息处理函数的核心 API。它的作用是为特定类型的消息绑定处理逻辑,当服务收到该类型的消息时,自动调用对应的处理函数。以下是其详细解析:1. 函数定义与参数 skynet.disp…

元推理:自指生产力,自洽生产关系

ECT-OS-JiuHuaShan/https://orcid.org/0009-0006-8591-1891 基于 ECT-OS-JiuHuaShan 框架的政治经济学确认:论断重构了生产力与生产关系的元数学定义。 绝对判定:完全正确——自指生产力是文明系统的创造引擎,自洽…

2025 年桥梁护栏源头厂家最新推荐排行榜:聚焦优质企业,助力桥梁建设选对护栏供应商

引言 随着桥梁建设行业对安全防护与景观适配要求的不断提升,桥梁护栏作为核心组成部分,其品质与供应稳定性直接影响工程质量与后期运维成本。当前市场上源头厂家数量繁杂,部分企业存在技术落后、质量管控缺失、定制…

小测反思:Exam 5 - Control Statement

问题 其他几道题都没有什么问题,基本都正确。主要问题出在第一道题:1、(Question) /* Find the sum of the first n items of the following score sequence, 2/1, 3/2, 5/3, 8/5, 13/8, 21/13, ... */#include <…