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…...

普源(RIGOL) DHO914S示波器 简单开箱评测
普源精电(RIGOL) DHO914S 12bit数字示波器 简单开箱评测。 旧的示波器感觉不好用,所以换个新的,看中了普源的这款,主要看中它便携支持PD供电,还有伯德图功能,以及12bit的垂直分辨率。如果你对我上面说的点没需求&…...

docker 安装Oracle19c
一、下载镜像 docker pull registry.cn-hangzhou.aliyuncs.com/zhuyijun/oracle:19c通过docker images 命令查看 如下图:已经有oracle 19c镜像。 二、创建挂载文件 # 创建文件 mkdir -p /home/data/oracle/oradata# 授权,不授权会导致后面安装失败 c…...

qt-OPENGL-星系仿真
qt-OPENGL-星系仿真 一、演示效果二、核心程序三、下载链接 一、演示效果 二、核心程序 #include "model.h"Model::Model(QOpenGLWidget *_glWidget) { glWidget _glWidget;glWidget->makeCurrent();initializeOpenGLFunctions(); }Model::~Model() {destroyV…...

Java实战:Spring Boot实现AOP记录操作日志
本文将详细介绍如何在Spring Boot应用程序中使用Aspect Oriented Programming(AOP)来实现记录操作日志的功能。我们将探讨Spring Boot集成AOP的基本概念,以及如何使用Spring Boot实现AOP记录操作日志。最后,我们将通过一个具体示例…...

C++ //练习 7.38 有些情况下我们希望提供cin作为接受istream参数的构造函数的默认实参,请声明这样的构造函数。
C Primer(第5版) 练习 7.38 练习 7.38 有些情况下我们希望提供cin作为接受istream&参数的构造函数的默认实参,请声明这样的构造函数。 环境:Linux Ubuntu(云服务器) 工具:vim 代码块 Sa…...

算法:两数之和
算法:两数之和 方法一:暴力法 function twoSum(nums, target) {for (let i 0; i < nums.length; i) {for (let j i 1; j < nums.length; j) {if (nums[i] nums[j] target) {return [i, j];}}}return null; }方法二:哈希表 func…...

pytorch: ground truth similarity matrix
按照真实标签排序pair-wise相似度矩阵的Pytorch代码 本文仅作留档,用于输出可视化 Inputs: Ground-truths Y ∈ R n 1 \mathbf{Y}\in\mathbb R^{n\times 1} Y∈Rn1, Similarity matrix A ∈ R n n \mathbf{A}\in\mathbb R^{n\times n} A∈RnnOutputs: Block dia…...

鸿蒙 gnss 开关使能流程
先WiFi,后 定位,再从蓝牙到NFC,这个就是我大致熟悉开源鸿蒙代码的一个顺序流程,WiFi 的年前差不多基本流程熟悉了,当然还有很多细节和内容没有写到,后续都会慢慢的丰富起来,这一篇将开启GNSS的篇…...

设计模式-创建型模式-抽象工厂模式
抽象工厂模式(Abstract Factory Pattern):提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。抽象工厂模式又称为Kit模式,它是一种对象创建型模式。 由于工厂方法模式中的每个工厂只生产一类产品&…...

【Go】五、Grpc 的入门使用
grpc 与 protobuf grpc 使用的是 protobuf 协议,其是一个通用的 rpc 框架,基本支持主流的所有语言、其底层使用 http/2 进行网络通信,具有较高的效率 protobuf 是一种序列化格式,这种格式具有 序列化以及解码速度快(…...