Java

[Java] this와 this()

junga 2022. 9. 6. 20:58

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
    }
}

'Java' 카테고리의 다른 글

[Java] JVM 구조  (0) 2022.09.08
[Java] 클래스 메서드와 인스턴스 메서드  (0) 2022.09.07
[Java] 클래스 필드의 구분  (0) 2022.09.06
[Java] 클래스 class  (0) 2022.09.06
[Java] 다차원 배열과 가변 배열  (0) 2022.09.05