this
- 인스턴스 자신을 가르키는 참조변수이다.
- 주로 멤버변수와 매개변수의 이름이 동일할 때, 이를 구분하기 위해 사용한다.
- static 메서드에서는 사용할 수 없다.
// 클래스를 통해 회원정보를 저장해보자.
class User {
String name;
String email;
String phone;
int age;
User(String name, String email, String phone, int age) {
// this 참조변수
this.name = name;
this.email = email;
this.phone = phone;
this.age = age;
}
public void userInfo() {
System.out.println("name : " + name);
System.out.println("email : " + email);
System.out.println("phone : " + phone);
System.out.println("age : " + age);
}
}
public class Main {
public static void main(String[] args) {
User user1 = new User("김김김", "kim@gmail.com", "010-1234-5678", 20);
user1.userInfo();
// name : 김김김
// email : kim@gmail.com
// phone : 010-1234-5678
// age : 20
}
}
this()
- 같은 클래스에서 생성자가 다른 생성자를 호출할 때 사용한다.
- 주로 코드의 중복을 줄일 목적으로 사용한다.
- this()는 생성자 코드에서만 사용할 수 있다.
- 생성자 첫 문장에서만 사용 가능하다.
// 회원정보에서 핸드폰번호와 나이는 선택입력이라고 가정해보자.
class User {
String name;
String email;
String phone;
int age;
User(String name, String email, String phone, int age) {
this.name = name;
this.email = email;
this.phone = phone;
this.age = age;
}
// 필수 정보 + 핸드폰 번호
User(String name, String email, String phone) {
this(name, email, phone, 0);
}
// 필수 정보 + 나이
User(String name, String email, int age) {
this(name, email, "번호가 없습니다.", age);
}
// 필수 정보
User(String name, String email) {
this(name, email, "번호가 없습니다.", 0);
}
public void userInfo() {
System.out.println("name : " + name);
System.out.println("email : " + email);
System.out.println("phone : " + phone);
System.out.println("age : " + age);
}
}
public class Main {
public static void main(String[] args) {
User user1 = new User("김김김", "kim@gmail.com", "010-1234-5678", 20);
User user2 = new User("이이이", "lee@gmail.com", "010-2345-6789");
User user3 = new User("박박박", "park@gmail.com", 45);
User user4 = new User("강강강", "kang@gmail.com");
user1.userInfo();
// name : 김김김
// email : kim@gmail.com
// phone : 010-1234-5678
// age : 20
user2.userInfo();
// name : 이이이
// email : lee@gmail.com
// phone : 010-2345-6789
// age : 0
user3.userInfo();
// name : 박박박
// email : park@gmail.com
// phone : 번호가 없습니다.
// age : 45
user4.userInfo();
// name : 강강강
// email : kang@gmail.com
// phone : 번호가 없습니다.
// age : 0
}
}