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

Java封装

封装是面向对象编程的三大特性之一(封装、继承、多态),它可以帮助我们保护数据安全,提高代码的可维护性。

什么是封装?

封装是指将数据(属性)和行为(方法)包装在一个类中,并对外隐藏实现的细节。简单来说就是:

  • 把属性设为私有(private)

  • 提供公共(public)的方法来访问和修改这些属性

为什么要封装?

  1. ​保护数据安全​​:防止外部直接访问和修改内部数据

  2. ​隐藏实现细节​​:外部只需要知道"做什么",不需要知道"怎么做"

  3. ​便于维护​​:内部实现可以改变而不影响外部调用

  4. ​增加代码灵活性​​:可以在方法中添加额外的逻辑(如验证)

封装的实现方式

1. 使用private修饰属性

public class Person {private String name;private int age;
}

2. 提供public的getter和setter方法

public class Person {private String name;private int age;// getter方法public String getName() {return name;}// setter方法public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {// 可以在setter中添加验证逻辑if(age > 0 && age < 150) {this.age = age;} else {System.out.println("年龄不合法");}}
}

封装的实际应用示例

public class BankAccount {private String accountNumber;private double balance;public BankAccount(String accountNumber) {this.accountNumber = accountNumber;this.balance = 0.0;}public void deposit(double amount) {if(amount > 0) {balance += amount;System.out.println("存款成功,当前余额: " + balance);} else {System.out.println("存款金额必须大于0");}}public void withdraw(double amount) {if(amount > 0 && amount <= balance) {balance -= amount;System.out.println("取款成功,当前余额: " + balance);} else {System.out.println("取款失败,余额不足或金额不合法");}}public double getBalance() {return balance;}public String getAccountNumber() {return accountNumber;}
}

封装的好处

  1. ​安全性​​:外部无法直接修改balance,必须通过deposit和withdraw方法

  2. ​可控性​​:可以在方法中添加业务逻辑(如金额验证)

  3. ​灵活性​​:内部实现可以改变而不影响外部调用

总结

封装是Java编程的基础概念,通过:

  1. 将属性设为private

  2. 提供public的getter和setter方法

  3. 在方法中添加必要的业务逻辑

这样可以构建更安全、更健壮的Java程序。记住:好的封装是优秀Java代码的开始!

http://www.dtcms.com/a/336886.html

相关文章:

  • Orange的运维学习日记--45.Ansible进阶之文件部署
  • Rust 入门 生命周期-next2 (十九)
  • Kubernetes配置管理全攻略:ConfigMap与Secret详解
  • [机器学习]10-基于ID3决策树算法的西瓜数据集分类
  • Apache RocketMQ,构建云原生统一消息引擎
  • 如何用github记录mit6s081-2020-labs学习过程
  • SQL注入防御
  • MacOS 安全机制与“文件已损坏”排查完整指南
  • 【前端】使用Vue3过程中遇到加载无效设置点击方法提示不存在的情况,原来是少加了一个属性
  • 动态规划:入门思考篇
  • SQL详细语法教程(五)事务和视图
  • zsh 使用笔记 命令行智能提示 bash智能
  • mac查看nginx安装位置 mac nginx启动、重启、关闭
  • 我的第一个开源项目:从0到1,我在GitHub写下的成长印记
  • OpenCV Python——Numpy基本操作(Numpy 矩阵操作、Numpy 矩阵的检索与赋值、Numpy 操作ROI)
  • 母猪姿态转换行为识别:计算机视觉与行为识别模型调优指南
  • 使用 ipconfig /all 获取电脑 IP 地址
  • Django 请求生命周期
  • TCP网络编程
  • Json A12 计算总和
  • Git版本控制与协作
  • 【秋招笔试】2025.08.16美团算法岗秋招机考真题
  • Cell Metab. (IF=30.9)|上海交大刘军力研究员团队:DLAT抑制亮氨酸分解驱动肿瘤发生
  • 朝花夕拾(七)--------从混淆矩阵到分类报告全面解析​
  • LeetCode 刷题【45. 跳跃游戏 II】
  • 云计算-云上实例部署 RocketChat:Mongodb、主从数据库、Node 环境配置指南
  • 生信分析自学攻略 | R软件和Rstudio的安装
  • 今日行情明日机会——20250818
  • 华为服务器设置bios中cpu为性能模式
  • week2-[循环结构]找出正数