2017-10-10 2 views
-1
public class Foo() { 

    public Foo() { 
    this.otherMethod(); 
    otherMethod(); 
    } 

    public void otherMethod() { 
    System.out.println("called"); 
    } 

} 

------ 
Main: 

Foo foo = new Foo(); 

두 호출은 예상하고, 그래서 당신은 다른 이상을 사용해야하는 특별한 경우가 을 알고 싶어한다.개체 메서드가 java에서 다른 개체 메서드를 호출 할 때 "this"키워드를 항상 사용해야합니까? <code>otherMethod</code> 작업에

"언제 내가 this을 사용합니까?"라는 질문에 대답하기는 어렵지만이 경우 가장 논리적 인 옵션은 무엇이며 그 이유는 무엇입니까?

답변

3

예를 들면, 아무런 차이가 없습니다. this은 컴파일러가 서로 다른 클래스의 멤버가 동일한 이름을 갖고 범위에있을 때 차이를 알 수 있도록 사용됩니다. 예를 들어,

public class Foo() { 

    private int bar; 

    public Foo(int bar) { 
      this.bar = bar; 
    } 

} 

내 예에서 this를 생략했다 경우 단순히 그 맥락에서 this.bar보다 우선 순위가 있기 때문에 그 문에 bar 모두 발생이 매개 변수를 참조 할 것 bar = bar 썼다.

1

아무런 차이가 없습니다. 비 정적 메서드는 항상 객체에서 호출됩니다. 컴파일러를 지정하지 않으면 this에 컴파일러가 호출됩니다. this을 지정하면 완전히 중복됩니다.

0

예제에서 두 메서드 호출 (this 및 out this)은 동일합니다. 둘 다 생성자를 사용하여 인스턴스화 한 객체에 속합니다.

일반적으로 개체 인스턴스를 사용하여 비 정적 메서드를 호출합니다. 개체 인스턴스가 없으면 암시 적으로 호출 메서드를 소유 한 개체에 속합니다 (this 또는 this을 사용하거나 사용하지 않을 수 있음)

관련 문제