2017-04-03 9 views
-1

나는 'this'라는 키워드를 자바에서 사용하는 것에 대해 많은 설명을 읽었지만 아직 완전히 이해하지 못했다. 이 예에서 사용합니까?자바에서 this 키워드로 strugling

private void login_BActionPerformed(java.awt.event.ActionEvent evt) {           
    if(user_TF.getText().equals("admin")&& pass_PF.getText().equals("admin")){ 
     this.B.setVisible(true); 
    }else{ 
     JOptionPane.showMessageDialog(null, "Warning!", "InfoBox: "+"Warning", JOptionPane.INFORMATION_MESSAGE); 
    } 
    this.user_TF.setText(""); 
    this.pass_PF.setText(""); 
}  

사용자와 패스가 일치하면 새 창이 열립니다. 여기서 'this'키워드를 사용합니까?

+1

***이 예제에서 사용합니까? *** 그 질문입니까? 왜냐하면 나는 여기 * 어떤 것도 보지 않기 때문입니다. –

+0

내가 편집 했으므로 'this'가 사용 된 것 같아요. – mojic2D

+0

중복 된 http://stackoverflow.com/questions/2411270/when-should-i-use-this-in-a-class – Chris311

답변

1

나는 당신이을 알아야 두 가지 용도가 있다고 생각 :

당신이 이름 N와 클래스 변수 및 이름 N과 방법의 변수를 가지고 있다면, 그들을 구별하는
  • , this.N를 사용 클래스 변수는 N이고 메소드 변수는 N입니다. Screenshot displaying possible usage
  • 생성자가 2 개인 경우를 상상해보십시오. 하나는 문자열 이름을 사용하고 다른 하나는 이름 + 연령을 사용합니다. 코드를 복제하는 대신 은 this()를 사용하여 다른 생성자을 호출합니다. Another screenshot displaying the usage

귀하의 경우에는 'B'라는 LOCAL (메소드) 변수가 표시되지 않으므로이 변수를 사용하지 않고도 처리 할 수 ​​있습니다.

0

클래스의 정적이 아닌 메서드는 호출 할 해당 클래스의 개체가 필요합니다. 클래스는 상태를 수정하고 읽는 상태의 청사진과 동작을가집니다. 목표는이 청사진의 실현입니다. 일단 객체가 생성되면 그 상태와 메소드를 갖게됩니다.

아래 코드가 있다고 가정 해보십시오.

public class A{ 
    int property; 
    public void foo(){ 
     bar(); 
    } 

    public void bar(){ 
     property = 40; 
    } 
} 

public class B{ 
    public static void main(String[] args){ 
     A obj = new A(); 
     obj.foo(); 
    } 
} 

몇 가지 질문에 대답 해보십시오.

Q1. foo 안에 bar을 호출하고 명시 적 객체를 사용하여 호출하지 않았습니다 (. 도트 연산자 사용). 객체는 bar 메서드가 호출됩니다.

2. 방법 barproperty이라는 변수에 액세스하여 수정하려고합니다. 어떤 개체가 property이라는이 상태에 속합니까?

답변

대답. A.this에 의해 참조되는 개체 (this과 동일).foo 메서드를 호출하여 호출 된 메서드를 암시 적으로 사용할 수 있도록하는 메서드입니다. 메서드가 실행되는 객체는 this으로 액세스 할 수 있습니다.

A2. Q1에 대한 대답과 동일합니다.

언제든지 객체는 Classname.this 클래스의 정적이 아닌 메소드 나 블록 내부에서 액세스 할 수 있습니다.