자바 this

develop.u·2022년 9월 14일
0

this란?

  • 자기 자신을 의미하는 키워드
    → 클래스 안에서 this를 사용하여 "자기자신"을 표현

<1> this를 사용해서 지역변수와 멤버변수 구분하기

지역변수             : 클래스의 메소드 안에 있는 변수
멤버변수(전역변수)	: 클래스 밑에 정의 되어있는 변수

🖥️ 예시1

class User{
	String name;				// 전역변수

	public void setName(){
		String name;			// 지역변수
		name = "사용자";			// 지역변수 name
		this.name = "학생";		// 전역변수 name
		}
	}
-----------------------------------------------------
* 전역변수와 지역변수가 동일한 이름으로 공존할 경우,
  유효성의 범위가 작은 변수가 우선적으로 인식됨

🖥️ 예시2

class User{
	String name;		// 전역변수(멤버변수)

	public void setName(String name) {
		this.name = name;
        
        // this.name → 전역변수 name
        // name → 지역변수 name(파라미터)
	}	
}
-----------------------------------------------------
* 파라미터도 해당 메서드 안에서만 유효한 지역변수의 일종

* 파라미터를 사용하여 멤버변수의 값을 간접적으로 설정할 시
→ 변수의 이름은 동일하게 지정하고 this 키워드를 사용하여
  멤버변수와 파라미터 구별

* 모든 멤버변수 앞에는 this 키워드를 사용하여 멤버변수임을
직관적으로 표시하는 것이 소스코드의 가독성을 위해서 바람직

<2> 현재 클래스의 메서드를 의미하는 용도로써의 this

class User{
	//클래스 내에 정의 되어있는 메서드
	public String getName(){ 
		String name = "학생";
		return name;
	}

	public void sayName(){
    	/*class 내에 정의되어있는 메서드도
        this를 사용하여 접근*/
		String myname = this.getName();
		System.out.println(myname);
	}
}
-----------------------------------------------------
* getName()을 호출하는 메서드는 this 키워드를 사용하여
현재 클래스 안에 포함된 다른 메서드임을 명시

* 하지만 메서드의 경우 다른 클래스의 메서드를 이름만으로
호출할 수 있는 방법이 없음
→ this.getName();이 아닌, getName()만 사용하더라도
코드 가독성의 문제는 없기 때문에 잘 사용하지 않음

  • 전역변수는 웬만하면 this를 적어주는 게 좋다.
  • 메소드에 접근할 때는 굳이 적어줄 필요 없다.

0개의 댓글