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

Java基础教程(009): Java 的封装

文章目录

  • 8、封装
    • 8.1、什么是封装?
    • 8.2、为什么需要封装?
    • 8.3 示例代码

8、封装

8.1、什么是封装?

封装就是把对象的属性和方法“包裹”起来,控制外部是否允许直接访问它们。

  • 通过访问修饰符(如 private)隐藏属性。
  • 通过 public 方法(getter/setter)提供对这些属性的安全访问。

8.2、为什么需要封装?

  1. 保护数据,防止被非法访问或赋值。
  2. 控制访问级别,提供统一入口修改属性。
  3. 增强代码的可维护性和可读性。

8.3 示例代码

我们在前面的 Student 类基础上,做如下封装:

1️⃣封装后的类:

package src.com.wang.test;public class Student2 {// 私有属性,外部不能直接访问private String name;private int age;private double score;// 公共的 Getter 和 Setter 方法public String getName() {return name;}public void setName(String name) {// 可以加判断,防止设置非法值this.name = name;}public int getAge() {return age;}public void setAge(int age) {if (age > 0 && age < 150) {this.age = age;} else {System.out.println("年龄不合法!");}}public double getScore() {return score;}public void setScore(double score) {if (score >= 0 && score <= 100) {this.score = score;} else {System.out.println("成绩不合法!");}}// 其他方法public void printInfo() {System.out.println("学生姓名: " + name);System.out.println("学生年龄: " + age);System.out.println("学生成绩: " + score);}
}

2️⃣调用类:

package src.com.wang.test;public class Student2Test {public static void main(String[] args) {// 创建对象Student2 stu = new Student2();// 通过 setter 方法赋值(不是直接访问属性)stu.setName("李四");stu.setAge(20);stu.setScore(88.5);// 通过 getter 方法访问属性System.out.println("姓名: " + stu.getName());System.out.println("年龄: " + stu.getAge());System.out.println("成绩: " + stu.getScore());// 调用打印方法stu.printInfo();}
}

3️⃣运行结果:

姓名: 李四
年龄: 20
成绩: 88.5
学生姓名: 李四
学生年龄: 20
学生成绩: 88.5

封装的关键点:

项目说明
private用于修饰属性,使外部无法直接访问
public 方法getXxx()setXxx() 方法是访问属性的唯一通道
控制数据合法性可在 setter 方法中添加判断逻辑
http://www.lryc.cn/news/588742.html

相关文章:

  • 约数之和其中数论的作用
  • 【前端】Vue 3 页面开发标准框架解析:基于实战案例的完整指南
  • SpringBoot 项目搭建的 4 种常用方式,从入门到实践
  • Android 多语言适配(I18n)
  • ICCV 2025满分论文:一个模型实现空间理解与主动探索大统一
  • 原型继承(prototypal inheritance)的工作原理
  • AOP简化MyBatis分页:高效自动化方案
  • 解决 Node.js 版本不兼容问题:深入理解 `yarn install --ignore-engines`
  • 【前后端】Node.js 模块大全
  • 2025.7.15总结
  • Linux 环境下安装 Node.js v16.13.0 完整指南
  • kimi-k2模型配置参数
  • Linux操作系统从入门到实战(九)Linux开发工具(中)自动化构建-make/Makefile知识讲解
  • CSS从入门到起飞!零基础小白的必修课
  • 【Java】JUC并发(线程的方法、多线程的同步并发)
  • 微信小程序:在ios中border边框显示不全
  • 飞睿UWB超宽带定位测距技术,数字钥匙重塑智能生活,高精度厘米级定位无感解锁
  • 公网ip到服务器流程
  • 2025年最新香港站群服务器租用价格参考
  • 从零开始的云计算生活——第三十二天,四面楚歌,HAProxy负载均衡
  • 【工程篇】07:如何打包conda环境并拷贝到另一台服务器上
  • Racknerd服务器Ubuntu
  • Datawhale 25年7月组队学习coze-ai-assistant Task1学习笔记:动手实践第一个AI Agent—英伦生活口语陪练精灵
  • 阿里云ssh证书过期,如果更换并上传到服务器
  • 三十二、【核心功能改造】数据驱动:重构仪表盘与关键指标可视化
  • 数学金融与金融工程:学科差异与选择指南
  • uniapp 微信小程序Vue3项目使用内置组件movable-area封装悬浮可拖拽按钮(拖拽结束时自动吸附到最近的屏幕边缘)
  • Springboot儿童认知图文辅助系统6yhkv(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • LED 照明应用提供高性价比方案?会是你的首选吗?
  • Unity音游开发全指南:模板与免费资源高效构建节奏游戏