让你秒懂getter()与setter()方法!!!

我们在封装类的时候经常会用到getter()和setter()方法,我相信对于很多初学者来说,都是拿来就用,但是要问他为什么要用却很迷糊,废话不多说。
首先我们需要知道Java中参数和返回类型是什么,这里不再赘述。
那么接下来不要着急,慢慢听我解释,相信你看完一定会明白类的封装中为何用getter()和setter()方法。
Getter()和Setter()可以让你执行get和set。我们将方法命名为getXX()和setXX(),是因为get和set这两次单词更符合我们的使用习惯,getXX是拿XX,setXX是设置XX,一般XX和类中的实例变量相对应,比如:

class Man{ 
 private int height; 
 public int getHeight(){ 
 return height; 
 public void setHeight(int height){ 
 this.height= height; 
 } 
 }


Getter的目的只有一个,就是返回实例变量的值。同理,Setter的目的就是要用一个参数设定实例变量的值。这里的实例变量,就是定义在类中但是在类中任何方法之外的变量,比如上面的Man类中的height变量就是实例变量。
如果我们继续采用以前的通过“.”圆点符来存取,比如:

class Man{ 
 int height; 
 }


new一个Man对象man出来后通过man.height=180修改类中实例变量的值,你可以把这件事情看作直接通过远程控制修改修改Man的实例变量。若远程控制落入坏人手中,可能成为杀伤力很强大的武器,因为你无法防止下面的操作:
man.height = 0;
这一定会很糟糕,一个人的身高怎么会是0呢??!!所以我们需要创建Setter这个方法强制其他程序必须通过Setter来设定变量而不是直接存取。

private int height;
   public void setHeight(int height){
      if(height>60){
        this.height= height;
      }
   }

这里假设刚刚出身的婴儿身高是60,利用setHeight方法强迫所有人必须调用setHeight方法才能设置height的值,这里height必须是private 的,防止其他类直接调用。这样height就会被设置成正常的高度。

所以,我们要会用get和set方法进行数据的封装和数据的隐藏,以下是封装的基本原则:
1.将你的实例变量标记为私有的private。
2.提供共有的get和set方法来控制存取动作。(public)

封装会对我们类的实例变量加上绝对领域,因此没有人会再去恶搞我们的实例变量,因为大部分的实例变量都有一个适当的范围,比如身高height就不能低于人类的最低身高60(这里假设是60).然后就是强迫其他的程序必须通过set方法检查并判断是否能执行实例变量的赋值。
或许大家会说,我看过很多set方法什么事情也没做,只是把值设置给变量而已,这样不是增加执行负担吗?还不如用man.height方法设置省事。可是你要知道,即便你暂时没有设置set方法里面的内容,一旦你事后想要改变想法而不需要改动其他的程序,封装的有点就马上体现出来了。直接存取变量的效率是远远比不上用get和set方法进行封装的好处的。
不知道看到这里大家理解了吗?如果有说的不足之处敬请大家多多指正,谢谢大家的支持!!!