JAVA的封装

在面向对象设计方法中,封装是指一种将抽象性函数借口的实现细节部分包装、隐藏的方法,封装可以认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。

封装主要分为两个步骤,首先,把我们想要封装起来的属性设置为private,这样,其他类就不能直接访问这个属性了,然后就是对这些属性编写对外的公共方法,让他们能够通过这些方法访问,也就是getter和setter方法。

除了能够隐藏信息之外,还有一个优点就是对信息的修改,比如我们现在有一个类Husband,他有一个属性age是int类型的,如果我们创建了一堆Husband对象,然后又需要把age改为String类型,如果没有setter方法,我们就要一个个去改每个对象的public int age为public String age了,但是因为有了封装,我们只需要在setAge里,加入this.age = String.valueOd(age)就足够了。也就是说,封装可以使得我们更容易修改类的内部实现,而无需修改使用了该类的客户代码。

另外,我认为封装还有一个很重要的优点,就是在其他类访问被封装的属性的时候,可以判断他们是否满足一定条件,这个条件主要加在getter里面,比如我们有一个方法getAge(String sex),如果想要访问这个age,就必须先传入一个性别,当满足if(sex.equals(lady))最后才能return真正的age,否则不允许。

同理,我们也可以在setter方法中加入一些判断语句,避免出错。