2012-12-23 6 views
0

그래서 간단한 프로그래밍 질문을 가지고 답을 찾지 못하는 것 같습니다. Google의 일부 코드를 탐색하는 동안 나는 코드에서 많은 메소드 앞에 'this'를 두는 것을 발견했습니다. 이 일의 목적은 무엇입니까? 그것을 사용하지 않는 것 이상의 이점이 있습니까?메소드를 호출하기 전에 'this'를 사용하십시오.

예 :

this.doMethod(); 

비교 :

doMethod(); 

내가 간단한 대답은 확실 해요, 그냥 내가 읽은 모든 코드를 이해할 수있는 것 같아.

+0

이것은 Java 및 OOP에 대한 질문이지만 Android 관련 문제는 아닙니다. –

답변

5

아니요, 메소드 호출에 아무런 차이가 없습니다. 더 가독성이 높은 것을 사용하십시오.

이 인스턴스 변수와 매개 변수 (또는 다른 로컬 변수)를 명확하게 구분할 때 차이가 있음에 유의하십시오. 예를 들면 다음과 같습니다 인스턴스 변수 매개 변수의 값 할당하는 것

public void setFoo(int foo) { 
    this.foo = foo; 
} 

- 단지 foo = foo;를 사용은 어떤 조합이 될 것입니다.

+0

나는 그것이 나를 위해 이것을 정리해 주신 모든 분들에게 감사합니다. –

3

전혀 차이가 없습니다. 당신은 항상 어떤 참조에서 메소드를 호출합니다. 참조를 사용하지 않으면 this 참조가 암시 적입니다.

따라서 doMethod()this.doMethod()과 동일합니다. this을 사용하면이를 명시 적으로 만 지정하면됩니다. 명시 적 this 참조를 사용하는 데 필요한

한 장소 인스턴스 변수 메소드/생성자 파라미터의 값을 할당하는 장소이며, 둘은 아래의 예에서와 같이, 동일한 이름을 가지고

public Demo(int var) { // Constructor 
    this.var = var; 
} 

위의 예에서 this.var은 인스턴스 변수를 참조하며 생성자 매개 변수를 참조하는 var과 다릅니다.

3

은 현재 클래스의 객체 인스턴스를 나타냅니다. 프로그래밍 연습에서는 대부분 모호성을 없애기 위해 사용됩니다. 예 : 예를 들어 name이라는 클래스 변수와 named이라는 메서드 매개 변수가 있으므로 두 변수를 구별하는 데 사용됩니다.

 public void setName(String name){ 
     this.name= name; 
    } 

당신이 어떤 모호함이없는 경우는 큰 차이를 만들지 않습니다 즉 setName("John");this.setName("John"); 같은 일이다. 그러나 여전히 하나의 차이점이 있습니다. this.setName("John");은 개체의 메서드를 호출하는 것과 동일한 패턴을 따릅니다 (예 : emp.setName("A");). 여기서 this은 sane 클래스 객체를 나타냅니다.

관련 문제