0

0

在Java中如何使用封装控制属性访问_OOP封装访问控制技巧

P粉602998670

P粉602998670

发布时间:2025-11-04 18:46:02

|

325人浏览过

|

来源于php中文网

原创

封装通过private修饰属性并提供public的getter和setter方法实现,如Person类中name和age私有化后,通过getName、setName等方法安全访问,并可在setAge中添加年龄校验逻辑。

在java中如何使用封装控制属性访问_oop封装访问控制技巧

在Java中,封装是面向对象编程(OOP)的核心特性之一。它通过隐藏对象的内部状态和控制对属性的访问来增强代码的安全性和可维护性。实现封装的关键在于合理使用访问修饰符和提供公共方法来间接操作私有属性。

使用private修饰属性

要实现封装,第一步是将类的字段(属性)声明为private。这样外部类无法直接访问这些字段,防止了数据被随意修改。

例如:

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

    // 外部无法直接访问name和age
}

提供公共getter和setter方法

虽然字段被设为private,但可以通过public的getter和setter方法安全地读取和修改属性值。在setter中还可以加入逻辑验证,确保数据有效性。

  • getter方法用于返回属性值,命名通常为get + 属性名(如getName()
  • setter方法用于设置属性值,命名通常为set + 属性名(如setAge(int age)
  • 在setter中可添加校验逻辑,比如年龄不能为负数
示例:

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

    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) {
            throw new IllegalArgumentException("年龄不能为负数");
        }
        this.age = age;
    }
}

合理选择访问修饰符

Java提供了四种访问级别,应根据需求选择合适的修饰符:

立即学习Java免费学习笔记(深入)”;

Getimg.ai
Getimg.ai

getimg.ai是一套神奇的ai工具。生成大规模的原始图像

下载
  • private:仅在本类中可访问 —— 最常用在属性上
  • default(包私有):同一包内可访问
  • protected:同一包或子类可访问
  • public:任何地方都可访问 —— 方法通常用public

一般原则是“尽可能小的访问权限”,属性尽量private,方法根据需要开放。

封装带来的好处

通过封装,可以:

  • 防止外部程序随意修改对象状态
  • 在赋值时加入合法性检查
  • 后续修改内部实现不影响外部调用
  • 提升代码的可维护性和复用性

比如将来想把age改为由出生年份计算得出,只要getter逻辑调整即可,调用方无需更改。

基本上就这些。封装不复杂但容易忽略细节,关键是坚持把属性设为private,并通过方法暴露行为。这样写出的类更健壮、更易管理。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
go语言 面向对象
go语言 面向对象

本专题整合了go语言面向对象相关内容,阅读专题下面的文章了解更多详细内容。

56

2025.09.05

java面向对象
java面向对象

本专题整合了java面向对象相关内容,阅读专题下面的文章了解更多详细内容。

52

2025.11.27

string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

443

2023.08.02

int占多少字节
int占多少字节

int占4个字节,意味着一个int变量可以存储范围在-2,147,483,648到2,147,483,647之间的整数值,在某些情况下也可能是2个字节或8个字节,int是一种常用的数据类型,用于表示整数,需要根据具体情况选择合适的数据类型,以确保程序的正确性和性能。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

544

2024.08.29

c++怎么把double转成int
c++怎么把double转成int

本专题整合了 c++ double相关教程,阅读专题下面的文章了解更多详细内容。

73

2025.08.29

C++中int的含义
C++中int的含义

本专题整合了C++中int相关内容,阅读专题下面的文章了解更多详细内容。

197

2025.08.29

default gateway怎么配置
default gateway怎么配置

配置default gateway的步骤:1、了解网络环境;2、获取路由器IP地址;3、登录路由器管理界面;4、找到并配置WAN口设置;5、配置默认网关;6、保存设置并退出;7、检查网络连接是否正常。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

222

2023.12.07

Python 自然语言处理(NLP)基础与实战
Python 自然语言处理(NLP)基础与实战

本专题系统讲解 Python 在自然语言处理(NLP)领域的基础方法与实战应用,涵盖文本预处理(分词、去停用词)、词性标注、命名实体识别、关键词提取、情感分析,以及常用 NLP 库(NLTK、spaCy)的核心用法。通过真实文本案例,帮助学习者掌握 使用 Python 进行文本分析与语言数据处理的完整流程,适用于内容分析、舆情监测与智能文本应用场景。

10

2026.01.27

拼多多赚钱的5种方法 拼多多赚钱的5种方法
拼多多赚钱的5种方法 拼多多赚钱的5种方法

在拼多多上赚钱主要可以通过无货源模式一件代发、精细化运营特色店铺、参与官方高流量活动、利用拼团机制社交裂变,以及成为多多进宝推广员这5种方法实现。核心策略在于通过低成本、高效率的供应链管理与营销,利用平台社交电商红利实现盈利。

109

2026.01.26

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Kotlin 教程
Kotlin 教程

共23课时 | 2.9万人学习

C# 教程
C# 教程

共94课时 | 7.7万人学习

Java 教程
Java 教程

共578课时 | 52.1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号