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

【从0开始学习Java | 第5篇】封装

在这里插入图片描述

文章目录

  • 🤔封装的概念
  • 🥝封装的优点
  • Java封装实现方式📖
    • 类成员访问修饰符的运用
      • 类成员访问修饰符的作用范围🧾
      • 注意:类的访问修饰符只有两种:public修饰符和默认修饰符(不写修饰符就是默认)
    • Getter 和 Setter 方法的使用

🤔封装的概念

 封装,简单来说,就是将数据和对数据的操作包装在一起,形成一个独立的单元。在 Java 中,这个单元就是。类将其内部的数据(成员变量)和操作这些数据的方法封装起来,对外界隐藏了内部的实现细节,只提供必要的接口供外部访问

🥝封装的优点

  1. 良好的封装能够减少耦合

  2. 类内部的结构可以自由修改

  3. 可以对成员变量进行更精确的控制

  4. 隐藏信息,实现细节

Java封装实现方式📖

类成员访问修饰符的运用

Java 提供了四种访问修饰符:privatedefault(默认,不写修饰符即为 default)、protected public,它们在实现封装中发挥着关键作用:

private:被 private 修饰的成员(属性或方法)只能在本类中访问。这是实现数据隐藏的重要手段,通过将敏感数据或内部方法设置为 private,可以有效防止外部直接访问和修改。例如:

private String name;
private int age;
// 私有方法,只能在本类中调用
private void privateMethod() {// 方法体
}

default:默认访问修饰符,被它修饰的成员可以在同一个包内访问。如果一个类没有指定包名,那么它属于默认包,同一个源文件中的类都在默认包内。例如:

// 默认访问修饰符,同一个包内可以访问
int legs;
// 默认访问修饰符的方法,同一个包内可以调用
void defaultMethod() {// 方法体
}

protected:被 protected 修饰的成员可以在同一个包内以及不同包的子类中访问。常用于在继承体系中,允许子类访问父类的某些成员。例如:

protected String protectedField;
protected void protectedMethod() {// 方法体
}

public:被 public 修饰的成员可以在任何地方访问、。通常用于定义类的公共接口,供外部代码调用。例如:

public String publicField;
public void publicMethod() {// 方法体
}

在实际应用中,通常将类的属性声明为 private,以保护数据的安全性,而将需要对外提供的操作方法声明为 public,供外部使用

类成员访问修饰符的作用范围🧾

在这里插入图片描述

注意:类的访问修饰符只有两种:public修饰符和默认修饰符(不写修饰符就是默认)

Getter 和 Setter 方法的使用

对于私有属性,为了让外部能够访问和修改这些属性的值,通常会提供 public 的 Getter 和 Setter 方法。Getter 方法用于获取属性的值,一般以 “get” 开头加上属性名(属性名首字母大写);Setter 方法用于设置属性的值,一般以 “set” 开头加上属性名(属性名首字母大写)。例如:

public class Person {private String name;private int age;// Getter方法public String getName() {return name;}// Setter方法public void setName(String name) {this.name = name;}// Getter方法public int getAge() {return age;}// Setter方法public void setAge(int age) {if (age >= 0) {this.age = age;} else {System.out.println("年龄不能为负数");}}
}

通过 Getter 和 Setter 方法,不仅可以实现对私有属性的访问和修改,还可以在方法中添加额外的逻辑,如数据验证、日志记录等,进一步增强代码的健壮性和安全性


如果我的内容对你有帮助,请 点赞 评论 收藏 。创作不易,大家的支持就是我坚持下去的动力!
在这里插入图片描述

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

相关文章:

  • 85、【OS】【Nuttx】【番外】gcc 关键字:位域(上)
  • 影翎Antigravity将发布全球首款全景无人机,8月开启公测招募
  • Leetcode 08 java
  • Linux | 文件权限
  • 面试刷题平台项目总结
  • ERROR c.a.c.n.c.NacosPropertySourceBuilder
  • 对讲机该怎么选?2025建议买的对讲机品牌
  • 并查集介绍及典型应用和编程题
  • 专线与专线之间的区别
  • Docker初学者需要了解的几个知识点(二):Docker、容器镜像
  • 2025年运维相关面试题
  • 前端手写贴
  • 北方公司面试记录
  • A1324LLHLX-T Allegro:高精度线性霍尔效应传感器 ±1%精度+4.5mV/G超高灵敏度
  • python优秀案例:基于机器学习算法的景区旅游评论数据分析与可视化系统,技术使用django+lstm算法+朴素贝叶斯算法+echarts可视化
  • 域名常见问题集(九)——域名市场介绍
  • VNC和RPC加固措施
  • Redis+JWT 认证管理最佳实践
  • MybatisPlus-20.插件功能-通用分页实体与MP转换
  • 推动技术的发展和创新:编程是IT行业中最为基础和核心的技能之一
  • 计算机网络五层模型
  • echarts(4.9.0)x轴标签过长,截取指定长度显示三个点,鼠标放上去显示完整标签示例
  • “影子插桩”:利用 LLVM 在二进制层面对 dlsym 调用做无痕监控(C/C++实现)
  • 前端基础之《Vue(26)—Vue3两种语法范式》
  • C++(面向对象之继承、多态)
  • C++20协程实战:高效网络库、手机终端、多媒体开发开发指南
  • 嵌入向量与向量数据库:AI时代的语义搜索革命
  • 【Git】分支
  • 前端接入DeepSeek
  • 数据结构(6)单链表算法题(下)