Cracking Code

[Java] this 키워드 본문

Java/Java language

[Java] this 키워드

CrackCo 2020. 8. 9. 21:41
자바의 this 키워드는 객체 생성 후 메모리에 올라간 자기 자신의 인스턴스를 가리킨다.

this

// 자기 자신의 필드 참조
this.field_name = value

// 자기 자신의 생성자 참조
this(data_type1 field_name1, data_type2 field_name2, ...);

다른 클래스에서 참조 변수명을 사용하여 생성된 인스턴스를 참조할 수 있지만

자기 자신이 자신을 참조할 때는 this 키워드를 사용합니다.

 

멤버 변수명과 매개 변수명이 같을 경우

일반적으로 setter 메소드를 사용할 때 멤버 변수명과 받는 매개 변수명을 같게 정의합니다.

이러한 경우 🚨변수명이 중복되어 식별이 불가하기 때문에 오류가 발생합니다.

이를 분간하기 위해서 this 키워드를 사용해 자기 자신의 멤버 변수를 가리킵니다.

E.g.

public class ThisClass {
    private String string;

    public void setString(String string) {
        this.string = string;
    }
}

String 타입의 매개 변수 string에 담긴 데이터String 타입의 멤버 변수 string에 저장합니다.

이를 분간하기 위해서 자기 자신의 멤버 변수인 string 변수는 this 키워드를 사용합니다.

 

생성자에서 다른 생성자를 호출할 때

생성자의 매개 변수가 여러 개일 때 각각 매개 변수의 수에 맞춰 생성자들을 오버로딩 정의하는 경우가 있습니다.

이러한 경우 this 키워드를 사용해 자기 자신의 생성자를 호출하여 기본값을 임의로 지정해줄 수 있습니다.

E.g.

public class ThisClass {
    private String name;
    private int age;

    // #1 생성자
    public ThisClass(String name, int age) {
        this.name = name;
        this.age = age;
    }

    // #2 생성자
    public ThisClass(String name) {
        this(name, 20);
    }

    // #3 생성자
    public ThisClass() {
        this("CrackCo");
    }
}

1.

기본 생성자인 #3 생성자는 this 키워드를 사용#2 생성자를 호출합니다.

#2 생성자는 매개 변수로 String 타입의 데이터를 저장하기 때문에

문자열 데이터 "CrackCo"와 함께 #2 생성자를 호출합니다.

 

2.

#2 생성자는 this 키워드를 사용해 #1 생성자를 호출합니다.

#1 생성자는 매개 변수로 String 타입의 데이터와 int 타입의 데이터를 저장합니다.

#2 생성자는 String 타입의 데이터를 전달 받아

임의의 데이터 숫자 20과 함께 #1 생성자를 호출합니다.

'Java > Java language' 카테고리의 다른 글

[Java] 메서드 오버라이딩 (Method Overriding)  (0) 2020.08.13
[Java] 상속 (Inheritance)  (0) 2020.08.12
[Java] 생성자 (Constructor)  (0) 2020.08.06
[Java] 필드 (Field)  (0) 2020.08.05
[Java] Method (메소드)  (0) 2020.08.05
Comments