Java的编程之旅24——private私有方法
1.private的介绍
在面向对象编程中,private是一种访问修饰符,用于限制成员的访问范围。私有成员只能在所属的类内部访问,对外部的类或对象是不可见的。
private的使用可以带来以下几个好处:
-
封装实现细节:私有成员可以隐藏在类的内部,不被外部对象直接访问。这样可以封装类的实现细节,使类的使用者只能通过公共接口进行操作,从而达到隐藏内部实现的目的,提高代码的安全性和可维护性。
-
防止误操作:私有成员的使用可以防止外部对象对类的内部状态进行直接修改,避免了错误的操作和数据的不一致性。只有通过类提供的公共接口,才能对私有成员进行访问和修改,确保了类的数据的正确性和一致性。
-
提供更好的封装性:私有成员可以控制对类的内部实现的访问权限,使类的使用者只能通过公共接口进行操作。这样可以提供更好的封装性,使类的内部细节对外部完全隐藏,减少了类的依赖和耦合性,提高了类的灵活性和可维护性。
需要注意的是,私有成员只能在所属的类内部进行访问,不能被外部类或对象直接访问。如果子类需要访问父类的私有成员,可以通过继承和公共方法来实现。另外,私有成员可以是属性、方法或构造函数等任何成员类型。
总结起来,private是一种访问修饰符,用于限制成员的访问范围。私有成员只能在所属的类内部访问,对外部的类或对象是不可见的。通过private的使用,可以实现封装实现细节、防止误操作和提供更好的封装性等好处。
2.代码中体现
public class Person{private String name;private int age;private void priMethod(){System.out.println("这是一个私有成员方法");}public void pubMethod(){System.out.println("这是一个公有成员方法,接下来要调用私有成员方法");this.priMethod();}//setter & getter方法public void setAge(int age){if(age < 0 || age > 150){System.out.println("年龄非法~被设为默认值18");this.age = 18;return;}System.out.println("年零为"+age);this.age = age;}public int getAge(){return age;}public void setName(String name){System.out.println("名字是"+name);this.name = name;}public String getName(){return name;}}
这段代码定义了一个名为Person的类,其中包含了私有的属性name和age,以及公有的方法pubMethod。
在这个类中,私有方法priMethod被定义为私有的,只能在Person类内部被访问。公有方法pubMethod可以被外部类或对象访问,并在其内部调用了私有方法priMethod,即通过公有方法来访问私有方法。
除了方法的定义,代码中还包含了属性的setter和getter方法。setter方法用于设置属性的值,在设置age属性时,添加了一些对年龄合法性的判断,如果年龄小于0或大于150,则输出错误信息并将年龄设为默认值18。getter方法用于获取属性的值。
总的来说,这段代码使用了private关键字来修饰成员变量name和age,使其成为私有成员,只能在Person类内部访问。私有方法priMethod也被定义为私有的,只能在Person类内部调用。通过使用私有成员,可以提高类的封装性,隐藏内部实现细节,只允许通过公有方法来访问和修改私有成员。
主函数中测试功能
Person person = new Person();
person.setAge(20);
person.setName("hh");
person.pubMethod();
//输出结果:
为名字是hh 年零为20
这是一个公有成员方法
3.Setter & Getter方法
setter和getter方法是用于操作私有成员变量的公有方法。
在面向对象编程中,为了保证数据的封装性和安全性,常将类的成员变量设置为私有(private)的。而为了能够访问和修改这些私有成员变量,需要提供公有的setter和getter方法。
setter方法用于给私有成员变量赋值,它通常以set开头,后面跟上对应的成员变量名。它接收一个参数,该参数是要赋给成员变量的值。通过setter方法可以对成员变量进行合法性检查和修改。
getter方法用于获取私有成员变量的值,它通常以get开头,后面跟上对应的成员变量名。它不接收任何参数,返回值是成员变量的值。通过getter方法可以获取到私有成员变量的值。
例如,在上述的代码中,setAge方法用于给age赋值,getAge方法用于获取age的值。setName方法用于给name赋值,getName方法用于获取name的值。
使用setter和getter方法的好处是,可以对成员变量进行控制和检查,确保数据的合法性。同时,也可以隐藏成员变量的具体实现细节,提高类的封装性和可维护性。
注意:在idea中可以快捷设置setter&getter方法
同时点击alt+insert键,根据自己的业务需求来选择Getter或者是Setter或者是Getter and Setter

选中一个,或者都选上(按shift键可同时选中) ,再点击OK
相关文章:
Java的编程之旅24——private私有方法
1.private的介绍 在面向对象编程中,private是一种访问修饰符,用于限制成员的访问范围。私有成员只能在所属的类内部访问,对外部的类或对象是不可见的。 private的使用可以带来以下几个好处: 封装实现细节:私有成员可…...
为什么在MOS管开关电路设计中使用三极管容易烧坏?
MOS管作为一种常用的开关元件,具有低导通电阻、高开关速度和低功耗等优点,因此在许多电子设备中广泛应用。然而,在一些特殊情况下,我们需要在MOS管控制电路中加入三极管来实现一些特殊功能。然而,不同于MOS管ÿ…...
CSS的注释:以“ /* ”开头,以“ */ ”结尾
CSS的注释:以“ /* ”开头,以“*/”结尾 CSS的注释: 以“ /* ”开头,以“ */ ”结尾 在CSS中,注释是一种非常重要的工具,它们可以帮助开发者记录代码的功能、用法或其他重要信息。这些信息对于理解代码、维护代码以及与他人合作都…...
MySQL中常见的几种日志类型【重点】
在MySQL中,有几种不同类型的日志,用于记录数据库的活动和操作,以便于故障排查、性能调优和数据恢复等目的。以下是MySQL中常见的几种日志类型: 错误日志(Error Log): 错误日志记录了MySQL服务器…...
odoo16-API(Controller)带有验证访问的接口
odoo16-API(Controller)带有验证访问的接口 目前我使用odoo原生的登录token来验证登陆的有效性 废话不多说直接上代码 # 测试获取session_id import requests class GetOdooData(http.Controller):def getOdooToken(self):# http://localhost:8123访问…...
Eclipse项目间的引用
我们在开发的时候,有时候需要把一个大的项目打散,尤其是现在微服务的架构很流行,一个大的项目往往被拆成很多小的项目,而有的项目作为公共工程被独立出来,比如有个工程专门提供各种Util工具类,有的工程专门…...
matplotlib使用案例3:通过自定义图例类实现图例的任意方向(行 or 列)的排列
这个方法的核心依然是基于matplotlib.legend._get_legend_handles_labels函数。然后将得到的handlers, labels进行重排,使得即使再调用Legend类的绘制方法对图例进行列排列,最终的效果也是图例的行显示,如[1、2、3、4、5、6],当指定ncols=2,Legend类的绘制方法得到的图例如…...
js设计模式:依赖注入模式
作用: 在对象外部完成两个对象的注入绑定等操作 这样可以将代码解耦,方便维护和扩展 vue中使用use注册其他插件就是在外部创建依赖关系的 示例: class App{constructor(appName,appFun){this.appName appNamethis.appFun appFun}}class Phone{constructor(app) {this.nam…...
【性能最佳实践】事务处理和读写策略原来这么关键!
MongoDB针对初级,中级及熟练的技术开发人员推出系列技术文章与行业案例。深入浅出地剖析MongoDB产品基础原理,使用技巧,典型行业场景及应用,还有Code Demo及线上线下活动推荐! 欢迎阅读有关MongoDB性能最佳实践的系列…...
【广度优先搜索】【网格】【割点】【 推荐】1263. 推箱子
作者推荐 视频算法专题 涉及知识点 广度优先搜索 网格 割点 并集查找 LeetCode:1263. 推箱子 「推箱子」是一款风靡全球的益智小游戏,玩家需要将箱子推到仓库中的目标位置。 游戏地图用大小为 m x n 的网格 grid 表示,其中每个元素可以是墙、地板或…...
开店怎么做进销存
开设一家店铺,无论是实体店还是网店,进销存管理都是确保店铺正常运营和盈利的关键环节。一款良好的进销存管理软件可以帮助你更好地掌握库存情况、优化采购策略、提高销售效率,并最终实现盈利目标。那么,开店怎么做进销存管理呢&a…...
UE4 C++联网RPC教程笔记(三)(第8~9集)完结
UE4 C联网RPC教程笔记(三)(第8~9集)完结 8. exe 后缀实现监听服务器9. C 实现监听服务器 8. exe 后缀实现监听服务器 前面我们通过蓝图节点实现了局域网连接的功能,实际上我们还可以给项目打包后生成的 .exe 文件创建…...
程序员一定要远离“钻研技术无用,搞钱才是正道”的言论
不知道大家有没有刷到过这样的言论: "程序员真的不要花大量时间研究底层代码,技术钻研的再高级再牛也逃不过被优化的下场。 前辈们开发一个功能用一天,我开发一个功能得用一个星期,只会显得我像一个技术菜鸟࿰…...
el-table同时固定左列和右列时,出现错误情况
最近遇到一个问题,就是需求是要求表格同时固定序号列和操作列,我们用的是饿了么组件库的el-table,如下图,出现了错误情况: 解决方法就是使用doLayout方法: 如果使用了keep-alive,可以在activated里执行doLayout方法: activated() {this.$nextTick(() => {this.$ref…...
django自定义后端过滤
DRF自带的过滤 第一个 DjangoFilterBackend 是需要安装三方库见[搜索:多字段筛选]两外两个是安装注册了rest_framework就有。 如上图,只要配置了三个箭头所指的方向,就能使用。 第一个单字段过滤 用户视图集中加上filterset_fields …...
计算机网络Day03--物理层
信道复用技术 频分复用 时分复用 统计时分复用 频分复用(FDM) 最基本 将整个宽带分为多份,用户在分配到一定的频带后,在通信过程中自始至终都使用这个频带 所有的用户在同一时间占用不同的带宽资源,以并行的方式工…...
RabbitMQ节点故障的容错方案
RabbitMQ节点故障的容错方案 1. broker启动加载逻辑1.1 日志文件1.2 broker启动流程1.2.1 整体流程1.2.2 数据恢复流程 2. 队列高可用2.1 选主逻辑2.1.1 从节点晋升策略2.1.2 主队列选择策略 2.2 HA切换 3. 疑问和思考3.1 如果一个broker宕机,运行在broker上的队列数…...
瑞_Redis_初识Redis(含安装教程)
文章目录 1 初识Redis1.1 认识NoSQL1.1.1 结构化与非结构化1.1.2 关联和非关联1.1.3 查询方式1.1.4 事务1.1.5 总结 1.2 认识Redis1.2.1 介绍1.2.2 特征1.2.3 优势 1.3 安装Redis ★★★1.3.1 Linux安装Redis1.3.1.1 安装Redis依赖 1.3.2 Windows安装Redis1.3.2.1 安装步骤1.3.…...
Android进阶(二十九) 走近 IntentFilter
文章目录 一、什么是IntentFilter ?二、IntentFilter 如何过滤隐式意图?2.1 动作测试2.2 类别测试2.3 数据测试 一、什么是IntentFilter ? 如果一个 Intent 请求在一片数据上执行一个动作, Android 如何知道哪个应用程序…...
vue+element下日期组件momentjs转换赋值问题
记录下使用momentjs转换日期字符串赋值给element的日期组件报错问题; <el-date-pickerv-model"form.serviceTime"type"date"class"fill-w mar-t-xs"value-format"yyyy-MM-dd HH:mm:ss"placeholder"请选择日期&quo…...
MySQL新手必看:Navicat导入SQL文件报错1046?三步搞定数据库选择问题
MySQL图形化工具避坑指南:彻底解决1046报错与数据库选择问题 刚接触MySQL的开发者,十有八九会在第一次导入SQL文件时遇到那个令人困惑的弹窗——"Error Code: 1046. No database selected"。这个看似简单的提示背后,其实隐藏着MySQ…...
搜索已死?不,它刚刚重生为Agent的“天眼”
前言2026年,AI Agent的能力正以月为单位狂飙突进。写代码、跑审计、做研报……曾经需要人类全程陪跑的任务,如今八成以上已被Agent自主接管。然而,一个看似微不足道的环节,却成了整个智能链条中最脆弱的一环——搜索。你让Agent查…...
2026年5月19日:谷歌云误停账户致Railway全平台服务中断8小时
事件报告:2026年5月19日 - GCP账户暂停Chandrika Khanduri 与 Cody De Arkland于2026年5月20日发布此报告。据悉,本报告反映了发布时所掌握的信息,可能会根据谷歌云(Google Cloud)的内部审查结果进行更新。影响2026年5…...
MCU工程迁移实战:从STM32到MSPM0L1306的完整指南
1. 项目概述:从零理解MCU工程迁移最近在折腾TI的MSPM0系列MCU,特别是MSPM0L1306这颗芯片。很多朋友拿到新的开发板或者从旧项目切换到新平台时,最头疼的就是“迁移工程”这一步。这不仅仅是把代码从一个文件夹复制到另一个文件夹那么简单&…...
注册培训师、咨询师——杨刚老师简介
注册培训师、咨询师——杨刚老师简介注册培训师、咨询师 MTP认证讲师——日本产业训练协会认证 世界500强管理目视化解决方案 版权持有人 杨老师具备10年生产管理经验、15年培训及咨询辅导经验。曾任某日资企业制作课课长、某上市企业精益经理、某民营企业绩效经理、某咨…...
VirtualBox虚拟机里Win10远程桌面黑屏?手把手教你改组策略搞定它
VirtualBox虚拟机Win10远程桌面黑屏终极解决方案:从策略组到网络优化的全链路排查 当你正沉浸在VirtualBox虚拟机的Windows 10环境中进行关键开发工作,突然发现远程桌面连接后只剩一片漆黑——这种体验就像在重要会议前突然失声。不同于物理机的远程连接…...
淘金币全自动脚本终极指南:每天节省20分钟,淘宝任务一键完成
淘金币全自动脚本终极指南:每天节省20分钟,淘宝任务一键完成 【免费下载链接】taojinbi 淘宝淘金币自动执行脚本,包含蚂蚁森林收取能量,芭芭农场全任务,解放你的双手 项目地址: https://gitcode.com/gh_mirrors/ta/t…...
米尔RK3562开发板深度评测:工业边缘AI网关的性价比之选
1. 项目概述:为什么关注米尔RK3562开发板?最近在给一个工业边缘计算项目选型,核心需求是在一个环境相对严苛的车间里,部署一个集成了视觉识别、多路传感器数据采集和本地轻量级推理的网关设备。性能不能太弱,否则处理不…...
ETT数据集实战:如何用油温预测优化电网负载与设备维护策略
ETT数据集实战:如何用油温预测优化电网负载与设备维护策略 当一座城市的电网在盛夏午后突然崩溃,背后往往隐藏着变压器油温失控的连锁反应。去年某沿海城市电网的故障分析报告显示,超过60%的突发停电事件与变压器过热直接相关——这个数据让行…...
DeepSeek SSO性能压测实录:单集群支撑5000+并发登录的4大调优阈值(含Prometheus监控指标基线)
更多请点击: https://intelliparadigm.com 第一章:DeepSeek SSO单点登录性能压测全景概览 DeepSeek SSO 作为企业级统一身份认证中枢,其在高并发场景下的响应延迟、会话稳定性与令牌签发吞吐能力直接决定下游所有业务系统的可用性边界。本章…...
