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을 의미한다.
'Java > 모두의 자바' 카테고리의 다른 글
Chapter 06-35 생성자 오버로딩과 this (0) | 2022.02.07 |
---|---|
Chapter 06-34 메서드 오버로딩 (0) | 2022.02.07 |
Chapter 06-32 생성자 (0) | 2022.02.07 |
Chapter 05-31 열거형(Enum) (0) | 2022.02.06 |
Chapter 05-30 변수의 스코프와 static (0) | 2022.02.05 |