java封装中的private关键字和set及get方法

Posted 牧牛人Alec

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java封装中的private关键字和set及get方法相关的知识,希望对你有一定的参考价值。

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

 

以上是关于java封装中的private关键字和set及get方法的主要内容,如果未能解决你的问题,请参考以下文章

java基础---10. 封装性

java基础面向对象之封装

Java_类与对象03_封装和privatethissuperstatic关键字

Java中的封装

为什么要使用封装?

java基础知识回顾-7(private,this,继承)