跳到主要内容
极客日志极客日志
首页博客AI提示词GitHub精选代理工具
搜索
|注册
博客列表
Javajava

Java 面向对象编程:封装机制详解与代码实现

综述由AI生成Java 封装是面向对象编程中将实现细节包装隐藏的方法。通过限制属性可见性为 private 并提供公共 getter/setter 方法,实现数据保护和降低耦合。文章阐述了封装的优点、实现步骤,并通过 EncapTest 和 RunEncap 类演示了具体代码逻辑。

kaikai发布于 2022/8/2更新于 2026/5/17 浏览
Java 面向对象编程:封装机制详解与代码实现

Java 封装

在面向对象程序设计方法中,封装(英语:Encapsulation)是指一种将抽象性函数接口的实现细节部分包装、隐藏起来的方法。

封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。要访问该类的代码和数据,必须通过严格的接口控制。

封装最主要的功能在于我们能修改自己的实现代码,而不用修改那些调用我们代码的程序片段。适当的封装可以让程序码更容易理解与维护,也加强了程序码的安全性。

封装的优点

  1. 良好的封装能够减少耦合。
  2. 类内部的结构可以自由修改。
  3. 可以对成员变量进行更精确的控制。
  4. 隐藏信息,实现细节。

实现 Java 封装的步骤

  1. 修改属性的可见性来限制对属性的访问(一般限制为 private),例如:
public class Person {
    private String name;
    private int age;
}

这段代码中,将 name 和 age 属性设置为私有的,只能本类才能访问,其他类都访问不了,如此就对信息进行了隐藏。

  1. 对每个值属性提供对外的公共方法访问,也就是创建一对赋取值方法,用于对私有属性的访问,例如:
public class Person {
    private String name;
    private int age;

    public int getAge() {
        return age;
    }

    public String getName() {
        return name;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public void setName(String name) {
        this.name = name;
    }
}

采用 this 关键字是为了解决实例变量(private String name)和局部变量(setName(String name)中的 name 变量)之间发生的同名的冲突。

实例

让我们来看一个 Java 封装类的例子:

EncapTest.java 文件代码:

/* 文件名:EncapTest.java */
public class EncapTest {
    private String name;
    private String idNum;
    private int age;

    public int getAge() {
        return age;
    }

    public String getName() {
        return name;
    }

    public String getIdNum() {
        return idNum;
    }

    public void setAge(int newAge) {
        age = newAge;
    }

    public void setName(String newName) {
        name = newName;
    }

    public void setIdNum(String newId) {
        idNum = newId;
    }
}

以上实例中 public 方法是外部类访问该类成员变量的入口。

通常情况下,这些方法被称为 getter 和 setter 方法。因此,任何要访问类中私有成员变量的类都要通过这些 getter 和 setter 方法。

RunEncap.java 文件代码:

/* 文件名:RunEncap.java */
public class RunEncap {
    public static void main(String args[]) {
        EncapTest encap = new EncapTest();
        encap.setName("James");
        encap.setAge(20);
        encap.setIdNum("12343ms");
        System.out.print("Name : " + encap.getName() + " Age : " + encap.getAge());
    }
}

以上代码编译运行结果如下:

Name : James Age : 20 

目录

  1. Java 封装
  2. 封装的优点
  3. 实现 Java 封装的步骤
  4. 实例
  5. EncapTest.java 文件代码:
  6. RunEncap.java 文件代码:
  • 💰 8折买阿里云服务器限时8折了解详情
  • 💰 8折买阿里云服务器限时8折购买
  • 🦞 5分钟部署阿里云小龙虾了解详情
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • WhisperX:70 倍实时语音转录、词级时间戳与多说话人分离技术
  • 基于 Spring Boot 的停车场管理系统设计与实现
  • 基于 STM32 的智能家居安防系统设计
  • OpenClaw 对接飞书机器人高频踩坑实战指南
  • 互联网云厂商竞逐“云 + 大模型”增长新路径
  • 无人机视觉语言导航入门:核心概念与技术挑战
  • VSCode Copilot 登录失败排查与解决方案
  • 排序算法实战:经典题目解析与代码实现
  • C++ 继承机制详解:从基础概念到多继承模型
  • IT6604 单链路 HDMI 1.4 接收芯片技术解析
  • AI 论文写作工具对比:千笔 AI 与灵感风暴功能分析
  • VSCode 关闭 GitHub Copilot 代码补全功能
  • C++ STL list 模拟实现:双向链表与迭代器封装
  • 深度解析 RAG 大模型知识冲突
  • Python 包管理工具 UV 功能介绍及安装
  • Nginx 部署 Vue 前端项目实战与配置详解
  • 如何快速搭建 webhook 自动化系统
  • 基于 Python 的电影推荐系统设计与实现
  • FPGA 高速通信:Aurora 64B/66B IP 核配置与回环测试
  • 链式二叉树详解:递归遍历与核心接口实现

相关免费在线工具

  • Keycode 信息

    查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

  • Escape 与 Native 编解码

    JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

  • JavaScript / HTML 格式化

    使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online

  • JavaScript 压缩与混淆

    Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online