this

치로·2024년 7월 17일

this ///중요

: 자기 자신을 의미하는 키워드

  • 클래스 안에서 this를 사용하여 "자기 자신"을 표현

1. this를 사용하여 지역 변수와 멤버 변수 구분하기

: 멤버 변수와 지역 변수가 동일한 이름으로 공존할 경우, 유효성 범위가 작은 변수가 우선적으로 인식

class Student {
	String name; 

	public void setName() {
		String name;
		name = "자바학생";
	}
}

2. this를 사용하여 지역 변수와 멤버 변수 구분하기

class Student {
	String name; 

	public void setName() {
		String name;
		name = "자바학생";
		this.name = "김하나";
	}
}

3. this를 사용하여 파라미터와 멤버 변수 구분하기

  • 파라미터도 해당 메서드 안에서만 유효한 지역 변수의 일종
  • 파라미터를 사용하여 멤버 변수의 값을 간접적으로 설정하고자 할 경우,
    변수의 이름을 서로 다르게 사용하는 것 보다는 이름은 동일하게 지정하고, this 키워드를 사용하여 멤버 변수와 파라미터를 구별하는 것이 java 언어의 일반적인 처리 방식
class Student {
	String name;
	public void setName(String name) {
		this.name = name;
	}
}
  • 모든 멤버 변수 앞에는 this 키워드를 사용하여 멤버 변수임을 직관적으로 표시하는 것이 소스 코드의 가독성을 위해 바람직

4. 현재 클래스의 메서드를 의미하는 용도로서의 this

  • getName() 메서드는 this 키워드를 사용하여 현재 클래스 안에 포함된 다른 메서드임을 명시
  • 하지만 메서드의 경우 다른 클래스의 메서드를 이름만으로 호출할 수 있는 방법이 없기 때문에, this.getName()이 아닌 getName()만 사용하더라도 코드 가독성에는 문제 없음
class User {
	public String getName() {
		String name = "김하나";
		return name;
	}
	public void sayName() {
		String myname = this.getName();
		System.out.println(myname);
}

연습 코드

package classobject;

class Member {
	String name;
	int age;
	
	String getName() {
		return this.name;
	}
	void setName (String name) {
		this.name = name;
	}
	int getAge() {
		return this.age;
	}
	void setAge(int age) {
		this.age = age;
	}
	void say() {
		System.out.println(this.getName());
		System.out.println(this.getAge());
	}
}

public class Main06 {

	public static void main(String[] args) {
		Member m = new Member();
		m.setName("자바학생");
		m.setAge(20);
		m.say();
	
	}

}

0개의 댓글