在java里这叫做封装,get方法就是为了外部类读取该类中的私有属性值。 this是当前对象指针,每一个实例化的对象都会有一个this指针指向对象自己所在的堆内存区域。this.x是明确告诉jvm去访问类的成员变量x,如果仅仅是x的话,会优先访问方法中声明为x的变量,如果方法中没有声明变量x,jvm才会访问成员变量x,这是变量的作用域问题。 比如下面这个例子: private int age; public int getAge() { return age; } public void setAge(int age) { this.age = age; } 在这段java代码中,setAge中给成员变量age赋值必须加上this,否则jvm会认为这个变量是setAge方法的入参。即setAge方法内部的变量age(形参也属于方法内部的局部变量)和全局变量age同名时,在setAge方法中直接访问age时,访问到的形参age,而非全局变量private int age。如果要访问同名的全局变量age,则需要加上this来定位到当前对象实例,然后通过.age访问对象实例的成员变量x。不知道这样说lz明白没有
this是当前对象指针,每一个实例化的对象都会有一个this指针指向对象自己所在的堆内存区域。this.x是明确告诉jvm去访问类的成员变量x,如果仅仅是x的话,会优先访问方法中声明为x的变量,如果方法中没有声明变量x,jvm才会访问成员变量x,这是变量的作用域问题。
比如下面这个例子:
private int age;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
在这段java代码中,setAge中给成员变量age赋值必须加上this,否则jvm会认为这个变量是setAge方法的入参。即setAge方法内部的变量age(形参也属于方法内部的局部变量)和全局变量age同名时,在setAge方法中直接访问age时,访问到的形参age,而非全局变量private int age。如果要访问同名的全局变量age,则需要加上this来定位到当前对象实例,然后通过.age访问对象实例的成员变量x。不知道这样说lz明白没有
一个对象的属性一般都会设置为私有,然后使用get或者set方法来设置或者获取。
就好比一个对象代表你的家,对象的属性代表你家里面的东西,如果别人要给你东西或者你给别人东西,都要通过门进入家里面来给,或者通过你这个主人,这就好比get和set方法,而不是直接把东西放到你家里面,因为家里面的东西是隐私的。
而且很多时候传入给某个属性的值是需要通过处理的,而不能直接就把某个属性给改掉,传入的值可能需要进行校验,传出的值可能需要格式化等等,这些逻辑就需要写入在get或者set方法里面。
与同名局部变量相区分