어떻게하면됩니까?멤버 변수와 로컬 메서드 변수가 같은 이름을 가질 수 있습니까?
class Test {
private int var1;
public Test(int var1) {
var1 = var1; //set the member variable to what was passed in
}
}
확실한 대답이있을 것입니다. 지금 당장 나를 피하고있어.
어떻게하면됩니까?멤버 변수와 로컬 메서드 변수가 같은 이름을 가질 수 있습니까?
class Test {
private int var1;
public Test(int var1) {
var1 = var1; //set the member variable to what was passed in
}
}
확실한 대답이있을 것입니다. 지금 당장 나를 피하고있어.
예, 동일한 이름을 공유 할 수 있습니다. 그러나, 인스턴스 변수를 참조하기 위해, 당신은 this
접두사를 사용해야합니다
public Test(int var1) {
this.var1 = var1;
}
그래서 "this"는 일반적으로 선택 사항입니까? 그러나이 경우 이름 충돌 이후로 필자는 그것을 필요로합니까? 나는 그것을 정확하게 이해하고 있는가? – Greg
@ 그렉 - 정확하게. –
이 경우 이름이 충돌하기 때문에 * 필요하지 않습니다. 다른 (특정) 범위에서 참조를 가져 오도록 JVM에 지시해야합니다. "감독자." 비슷하게 작동하지만 확장하는 클래스에서 변수/메소드를 가져옵니다 ("더 큰"범위). 일부 언어는 "글로벌"을 제공하기까지합니다. 타입 변경자는 사용할 수 있지만 Java는 사용할 수 없습니다. – Dolph
가능하지만 로컬 변수는 클래스 변수를 숨 깁니다.
좋은 코드를 한번보세요. 정확히 this ('this.x = x')가 setter와 생성자에 사용된다는 것을 알 수 있습니다. 새로운 이름을 발명 할 필요가 없습니다. – maaartinus