멤버변수와 지역변수가 동일한 이름으로 공존할 경우,
유효성 범위가 작은 변수가 우선적으로 인식된다.
class Student{
String name;
public void setName(){
String name;
name = "자바학생";
}
}
this는 class의 변수를 접근하기 위한 수단이다.
class Student{
String name;
public void setName(){
String name;
name = "자바학생";
this.name = "김하나";
}
}
파라미터도 해당 메서드 안에서만 유효한 지역변수의 일종이다.
파라미터를 사용해 멤버변수의 값을 간접적으로 설정하고자 할 경우
변수의 이름을 서로 다르게 사용하는 것 보다는 이름은 동일하게 지정하고
this 키워드를 사용하여 멤버변수와 파라미터를 구별하는 것이
java언어의 일반적인 처리 방식이다.
class Student{
String name;
public void setName(String name){
this.name = name;
}
}
모든 멤버변수 앞에는 this키워드를 사용하여
멤버변수임을 직관적으로 표시하는 것이 "소스코드의 가독성"을 위해 바람직하다.
getName() 메서드는 this키워드를 사용하여
현재 클래스 안에 포함된 다른 메서드임을 명시하고 있다.
하지만, 메서드의 경우 다른 클래스의 메서드를 이름만으로
호출할 수 있는 방법이 없기 때문에, this.getName()이 아닌
getName()만 사용하더라도 코드 가독성의 문제는 없다.
class User{
public String getName(){
String name = "김하나";
return name;
}
public void sayName(){
String myname = this.getName();
System.out.println(myname);
}
}