封装:
隐藏对象的属性值和实现的方式,对外只提供访问的公共方式。
好处:
提供啊代码的复用性
隐藏对象的属性值和实现的方式
提高安全性
封装的原则性:
把不需要对外界属性内容都隐藏起来,对外只提供访问方式。
private关键字:
1-是一个权限修饰符
2-可以修饰成员变量
3-被修饰的成员只能在本类中被访问。
- 如果一个属性是 public,那么外部可以直接对这个属性进行读取与修改;
- 如果一个属性是 private,那么外部不可以直接对这个属性进行读取与修改,而是通过这个类提供的 get、set 方法去访问。
也就是说,前者把控制权交给别人,而后者的控制权还在自己手中。我举几个简单的例子:
- 比如说一个只读属性,可以提供 get 方法给外界调用读取,但是不允许修改,那么这时候可以不提供 set 方法,或者在 set 方法中抛出异常;
- 比如我的数据格式与别人使用的格式不同,那么我可以在 get 与 set 方法中,加上进行格式转换的代码;
- 比如我的数据可以被读取与修改,但是修改时候必须经过我的验证,那么我的 set 方法中会添加数据验证的代码。
也就是说,get、set 方法的主要作用是控制外界对私有属性的访问。这一点,将属性声明为 public 是做不到的。
例如:
/**
* 缓存类
*/
@Component//加入到springIOC容器当中 public class BaseCache { //先写一个声明,这样才知道构建哪一个类型的缓存;别导错包是Google的 private Cache<String,Object> tenMinuteCache = CacheBuilder.newBuilder() //设置缓存初始值大小,应该合理设置,后续会扩展 .initialCapacity(10) //最大值,设置过大会有内存冲突等问 .maximumSize(100) //并发数设置 .concurrencyLevel(5)//换存过期时间,写入后10分钟过期 .expireAfterWrite(600, TimeUnit.SECONDS)//统计换存命中率 .build();//构建类 //private修饰,所以需要set和get方法 public Cache<String, Object> getTenMinuteCache() { return tenMinuteCache; } public void setTenMinuteCache(Cache<String, Object> tenMinuteCache) { this.tenMinuteCache = tenMinuteCache; } }