封装:
隐藏对象的属性值和实现的方式,对外只提供访问的公共方式。
好处:
提供啊代码的复用性
隐藏对象的属性值和实现的方式
提高安全性
封装的原则性:
把不需要对外界属性内容都隐藏起来,对外只提供访问方式。
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;
}
}