java -封装性
来源:互联网 发布:文言文辞职信走红网络 编辑:程序博客网 时间:2024/05/29 14:05
今天看书中的关于封装的感悟(java核心卷1 p110)
1 对于类中的属性进行封装好处(get/set方法)
可以改变内部实现,除了该方法外,不会影响其他代码
更改器方法(set)可以执行错误检查,特别是一旦值域出现了错误。只要调试这个方法就行。如果属性是public,那么破坏这个值域的调用者可能出现在各地方
一个get方法的返回值不能引用可变对象
class Employee{ private Date hireDay; public Date getHireDay{ return hireDay; } }
Date类有个setTime方法。可以改变 hireDay属性值。
Date对象是可变,可就破坏了封装性。
例如下面错误代码
Emloyee harry =...; Date d = harry.getHireDay(); d.setTime(anyValue);
错误原因:d 和 harry.hireDay引用同一个对象。对d调用set方法就可以自动改变这个雇员对象的私有状态!
解决:
1. 如果需要返回一个可变对象的引用,应该首先对它进行克隆。对象的克隆clone是指存放在另外一个位置上的对象副本。
...public Date getHireDay(){ return (Date)hireDay.clone(); }
2 可以换成不可变 LocalDate类,没有更改器的方法。ps区分 Date类 LocalDate类
0 0
- java -封装性
- Java封装性
- java的封装性
- java封装性
- Java 的封装性
- Java封装性
- Java的封装性
- java 封装性
- JAVA封装性
- JAVA的封装性
- java的封装性
- 简述JAVA的封装性
- 解读:Java 中的 封装性
- Java面向对象:封装性
- java封装
- JAVA 封装
- 【封装】 JAVA
- Java封装
- 委托多播
- 第四天2017/03/31(下午2:结构体、数组)
- 类型转换
- 由FlexBox算法强力驱动的Weex布局引擎
- leetcode 421. Maximum XOR of Two Numbers in an Array
- java -封装性
- Andorid 调用H5时使用WebView的总结!
- Perfect Number
- linux 笔记
- Ora-01830 日期格式图片在转换整个输入字符串之前结束
- SpringMVC BindingResult验证框架Validation特殊用法
- MySQL连接失效问题
- Oracle常用的性能诊断语句
- 套路深!软件测试各阶段的测试策略是什么?