저는 인스턴스 데이터로 취급 할 변수와 정식 매개 변수로 취급 할 변수를 Java가 결정하는 방법 (Java를 의인화하는 것처럼 들리는 경우 변명)을 파악하려고합니다. 나는이 혼란이 적절한 코딩 기술에 따라 회피 될 수 있다는 것을 알고 있지만, 그 뒤에있는 논리에 관해서는 궁금하다. 다음 예 :Java가 형식 매개 변수 또는 인스턴스 데이터 인 경우 어떻게 감지합니까?
public Foo{
int a, b, c;
//this assigns the formal parameters' values to the instance data's values
public Foo(int x, int y, int c){
a = x; //makes sense
this.b = y; //makes sense
c = c; //how?
}
//how can you tell which value is being dealt with
public int getBar(int a, int b, int c){
if(b < (b - b))
a += 5;
else
a += a;
b = b;
b += c;
return b;
}
}
생성자, Foo()
는 형식 매개 변수는 모든 인스턴스 데이터에 복사되고있다. 첫 번째 두 과제는 분명하지만 세 번째 과제는 내가 몇 가지 질문을하기 시작하는 곳입니다. Java는 사용하는 "c"를 어떻게 알 수 있습니까? 인스턴스 데이터를 저장하는 매개 변수 또는 형식 매개 변수를 나타내는 매개 변수 두 번째 함수 (너무 극단적 인 경우 미안)에서 Java가 인스턴스 데이터를 나타내는 변수와 형식 매개 변수를 나타내는 변수를 결정하는 방법은 무엇입니까?
규칙은 간단합니다. 매개 변수와 필드 (여러분이 인스턴스 데이터라고 부른 것)가 같은 이름을 가진다면, 그 이름 앞에'this '가 붙지 않는 한 ** 매개 변수 **가 사용됩니다. –
'c = c'는 인스턴스 변수에 할당하지 않습니다. – user2357112