Java/모두의 자바

Chapter 06-33 this

계란💕 2022. 2. 7. 12:21

06-33.1 객체 자신을 참조하는 this 키워드

 

  Def) this: 내 구성요소라는 의미를 지닌다.

  - 형식: "this.메서드명"

  - 내 필드 name 에 지금 들어온 매개변수 name을 넣어달라는 의미로 사용한다. 

  - 객체 자신을 참조하는 키워드이다. 

  - chapter 32에서 Car클래스에 생성자를 만들었다. 

  - Car클래스를 보면 생성자의 매개 변수가 n이라는 이름으로 정의되어있다. 

 

  Ex)

<hide/>

package javaStudy;
public class Car{
	// 형 + 필드명
	String name;
	int number;
	
	public Car(String n) {
		name = n;
	}	
}

  Note) n이라는 매개변수명만 보면 무엇을 의미하는지 파악하기 어렵다.

  - 변수명은 한 눈에 알아보기 쉬운 이름을 사용하는 게 좋다. ( n->name으로 고치자)

 

  Ex)

<hide/>

package javaStudy;
public class Car{
	// 형 + 필드명
	String name;
	int number;
	
	public Car(String name) {
		name = name;
	}	
}

  Note)

  - 매개변수를 name으로 수정했더니 "name = name"이 되버린다. 

  - name으로 수정한 후 CarExam2 클래스를 실행히면 null이 출력된다. 

  -  name = name 에서 좌변의 name이 정의한 필드의 name을 가리키는 게 아닌 매개변수의 name을 가리킨다.

  -  그래서 값을 제대로 사용할 수 없다. 

  - 따라서, 이런 경우 "this"를 이용해서 name이 어떤 것이지 정확히 알려줘야한다.

 

 

06-33.2 this 사용 방법

 

  Ex) 

<hide/>

package javaStudy;
public class Car{
	// 형 + 필드명
	String name;
	int number;
	
	public Car(String name) {
		this.name = name;
	}	
}

  Note)

  - 내 필드 name에 지금 들어온 매개변수 name을 넣어달라는 의미로 쓴다. 

  - CarExam2를 실행하면 소방차가 정상으로 출력된다. 

  

 

06-33.3 this 실습) Person 클래스의 생성자 내부를 수정해서  매개변수로 받은 name과 age를

  클래스 필드name, age에 저장하라.

 

  Ex)

<hide/>

package javaStudy;

class Person {
	String name;
	int age;	
	public Person(String name , int age ) {
		this.name = name;
		this.age = age;

	}
}
<hide/>

package javaStudy;
public class PersonExam {
	public static void main(String[] args) {
		
		Person person = new Person("사람", 25 );	
		
		System.out.println(person.name);
		System.out.println(person.age);
	}
}

 Note)

  - 클래스의 필드를 name, age의 변수를 선언했다. 

  - 생성자의 매개변수로 name, age를 선언했다. 

  -  위 두 개가 헷갈릴 수 있으므로 이름 중 하나가 객체의 필드라는 것을 알려줘야한다. 

  - this: 해당 객체를 의미한다. 

  - this.name : 매개 뱐수가 아니라 객체의 구성 요소 name을 의미한다.