封装
2023-09-14 08:58:29 时间
未封装的对象可能会比较难堪
直接将属性暴露出来,使用圆点运算符来存取
d.age=2;
但是无法确定使用者是否这样操作:
d.age=-2;
因此,有必要对使用者的使用权限做限制,告诉它可以怎样操作,不可以怎么操作。
封装的手段是:
private 修饰类的属性,使得只能本类使用,关闭了外界访问通道
public 修饰提供两个存取方法,存取方法里面对属性进行存取,方法名格式为getXxx()、setXxx()
之前dog类封装后代码:
public class Dog { private int age;//将age属性定义为private,只能被Dog内部访问 public int getAge() { return age; } public void setAge(int a){ if(0<= a || a >= 30){ System.out.println("Wrong number of age"); return; } age = a; } } public class DogTestDriven { public static void main(String[] args) { Dog d = new Dog(); d.setAge(10);// d.setAge(-2); // d.age = 10; 非法 System.out.println(d.getAge()); } }
第一点,封装后,用户只能看到你想让它看到的东西,所以隐藏了细节,比如我们让用户看不到直接的可访问的属性
第二点,封装后,用户只能通过我们给的set方法进行数据的处理,我们在里面加入了逻辑控制了非法数据
第三点,如果非法条件需要更改的时候,我们只需要更改提供的set方法即可实现所有注入规则的更改,增强可维护性
封装不只是封装
封装并不只是对属性而言,对于方法,也应该进行必要的封装,例如工具类的编写,我们只提供工具方法给外界,程序处理有关代码内部消化即可。
相关文章
- A2D JS框架 - DES加密解密 与 Cookie的封装(C#与js互相加密解密)
- 封装CIImage实现实时渲染
- 017-封装-OC笔记
- 封装$
- python封装之property装饰器代码示例:将一个get方法,转换为对象的属性
- 使用 SAP ABAP 封装的 Office Integration class 访问本地 Excel 文件
- js工具代码封装(超长)2/3
- uni-app 前后端实战课 - 《悦读》学习笔记:【封装全局登录检查函数并部署】小程序开发实例教程2/
- DL之DNN:自定义2层神经网络TwoLayerNet模型(封装为层级结构)利用MNIST数据集进行训练、GC对比
- 基于FFmpeg将pcm+rgb编码并封装MP4
- selenium3 web自动化测试框架 :页面基础操作、元素定位方法封装、页面操作方法封装
- LyScript 插件命令返回封装
- Python接口自动化之requests请求统一封装