课时7:成员属性封装

简介: 我们先来了解一下属性封装。在Java中,成员由属性和方法构成,一般来说,方法是对外提供服务的,通常不会进行封装处理,而属性由于需要较高的安全性,往往要对其加以保护,也就是要用封装性来处理、保护属性。

课时7:成员属性分装

 

摘要:我们先来了解一下属性封装。在Java中,成员由属性和方法构成,一般来说,方法是对外提供服务的,通常不会进行封装处理,而属性由于需要较高的安全性,往往要对其加以保护,也就是要用封装性来处理、保护属性。

 

举个例子,就像给同学改名字,得经过民政、公安等一层层手续,档案也要改,可见名字的安全性要求比较高,不能随意改动。


在默认情况下,Java里的类的属性可以被其他类通过对象进行调用。比如看这样一个简单的代码示例,定义“Person per”,代码编译执行后,我们能发现,在外部可以直接修改或者访问属性,这就意味着属性并没有得到保护。


虽然代码编译执行结果可能看起来正常,像显示“张三,18”,但要是把年龄改成“-18”,对于普通人来说,这显然不符合实际情况,也就是说在属性不封装的情况下,存在外部可能设置错误数据的问题,因为在“Person”类中提供的像“Name”“Age”这些属性并没有进行封装处理,外部能直接调用。


要是想解决这类问题,就可以利用Perivate关键字对属性进行封装处理。比如在代码里,把之前的代码拿过来,然后在相应地方增加“Perivate”关键字,在代码里追加这两个关键字来进行处理。


在追加“Perivate”关键字完成对属性的封装后,再进行编译会发现,外部不能直接访问这些属性了,也就是对外部不可见,但在类的内部是可见的。

image.png

要是想让外部程序可以访问已封装的属性,在开发规范中有相应要求,可以通过设置(Setter)或获取(Getter)属性的方法来实现,设置或取得属性的方法写成“setXxx(),getXxx(),以Perivate String Name为例,设置属性为获取属性的方法写成Public void set name(string n)这样的形式,获取属性方法写成Public string get nam()


在代码里具体操作时,像给属性赋值就不用直接用属性了,而是用对应的方法,比如“setName(...)”“setAge(...)”这些。如果想对赋值做检测也是可以的,比如规定年龄“a”大于等于0时才赋值,不然就赋值为0。


要记住,以后在进行Java开发定义时,类中的所有属性基本都要用“Perivate”进行封装,这适用于绝大多数情况,而且属性若要被访问,必须提供Setter与Getter方法。


另外,封装性是面向对象的第一大主要特征,它不光是简单的属性封装,还和访问权限有关,不过关于访问权限后续会再做说明,总之在开发过程中,把属性加上“Perivate”封装是标准做法。

相关文章
|
存储 小程序 JavaScript
【微信小程序】-- 自定义组件 -- 数据、方法和属性(三十三)
【微信小程序】-- 自定义组件 -- 数据、方法和属性(三十三)
|
7月前
|
Java 编译器 开发者
课时8:构造方法与匿名对象
本此课程主要围绕Java中的构造方法与匿名对象展开讨论。详细阐述了构造方法出现的原因、定义要求、使用方式、重载特性,以及与setter方法的区别;同时介绍了匿名对象的概念、使用场景,并通过程序示例进行内存分析,帮助读者深入理解这两个重要的Java概念。
|
7月前
|
Java 编译器
课时9:this调用本类属性
本次分享的主题是 This 调用本类属性。主要分为一个部分: 使用 This 关键字表示或调用当前对象的属性
|
JavaScript 前端开发 API
Chrome插件实现问题之 content_script.js能做什么
Chrome插件实现问题之 content_script.js能做什么
|
数据挖掘 Python
【Python】已解决:Python pandas读取Excel表格某些数值字段结果为NaN问题
【Python】已解决:Python pandas读取Excel表格某些数值字段结果为NaN问题
1220 0
|
11月前
|
弹性计算 负载均衡
slb健康检查频率与超时时间
slb健康检查频率与超时时间
474 4
|
运维 Linux 网络安全
跨平台SSH文件传输:Linux与Windows环境下的实践指南
本文介绍了在Linux和Windows之间使用SCP、SecureCRT及PuTTY工具集进行文件传输的方法。在Linux中,利用SCP命令进行文件下载、上传及目录传输。在Windows环境下,PSFTP和PSCP提供类似功能,而SecureCRT作为SSH客户端,支持设置上传下载目录并进行文件传输。掌握这些工具的使用可提升跨平台运维效率。
ELEMENT-PLUES如何设计二级高亮样式,文字如何呈现高亮效果,如果字体出现不对齐的情况,侧边栏icon如何调位置,目录如何折叠,如何延迟动画播放,如何添加阴影,如何添加logo,在行内样式写宽
ELEMENT-PLUES如何设计二级高亮样式,文字如何呈现高亮效果,如果字体出现不对齐的情况,侧边栏icon如何调位置,目录如何折叠,如何延迟动画播放,如何添加阴影,如何添加logo,在行内样式写宽
|
存储 算法 Java
JVM垃圾收集-ZGC的染色指针
垃圾收集是回收以前分配的内存的机制, 以便将来的内存分配可以重用它。
1166 0
JVM垃圾收集-ZGC的染色指针
|
数据挖掘 数据处理 Python
Pandas 高级教程——自定义函数与映射
Pandas 高级教程——自定义函数与映射
402 0