Menu
Coddy logo textTech

this 키워드

Coddy Java 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨 — 87개 중 4번째.

this 키워드는 클래스의 현재 인스턴스를 가리킵니다. 이것은 이름이 같은 필드와 매개변수를 구분합니다.

this가 없으면 매개변수가 필드를 가리게 됩니다.

public class Person {
    private String name;
    
    public Person(String name) {
        name = name;  // 매개변수를 자기 자신에게 할당합니다!
    }
}

this를 사용하여 값을 올바르게 할당하기

public class Person {
    private String name;
    
    public Person(String name) {
        this.name = name;  // 매개변수를 필드에 할당합니다
    }
    
    public String getName() {
        return this.name;
    }
}

메서드에서 this 사용하기

public class Person {
    private String name;
    private int age;
    
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    
    public String getDescription() {
        return this.name + " is " + this.age + " years old";
    }
}

this 키워드는 항상 현재 객체를 가리킵니다. 매개변수 이름이 필드 이름과 일치할 때 필수적이며, 혼동과 버그를 방지합니다.

challenge icon

챌린지

중급

필드와 매개변수를 구분하기 위해 this 키워드를 사용하여 Person 클래스를 완성하세요:

  • 매개변수를 필드에 할당하기 위해 this를 사용하는 생성자
  • 필드에 접근하기 위해 this를 사용하는 Getter 메서드들
  • "<name>, age <age>, from <city>"를 반환하는 getDescription() 메서드

치트 시트

this 키워드는 클래스의 현재 인스턴스를 참조하며, 이름이 같은 필드와 매개변수를 구분합니다.

this가 없으면 매개변수가 필드를 가리게(shadow) 됩니다:

public Person(String name) {
    name = name;  // 매개변수를 자기 자신에게 할당합니다!
}

this를 사용하여 값을 올바르게 할당하는 방법:

public Person(String name) {
    this.name = name;  // 매개변수를 필드에 할당합니다
}

getter 메서드에서 this 사용하기:

public String getName() {
    return this.name;
}

여러 필드와 함께 this 사용하기:

public class Person {
    private String name;
    private int age;
    
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    
    public String getDescription() {
        return this.name + " is " + this.age + " years old";
    }
}

직접 해보기

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String name = scanner.nextLine();
        int age = Integer.parseInt(scanner.nextLine());
        String city = scanner.nextLine();
        
        Person person = new Person(name, age, city);
        
        System.out.println("Name: " + person.getName());
        System.out.println("Age: " + person.getAge());
        System.out.println("City: " + person.getCity());
        System.out.println(person.getDescription());
    }
}
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

객체 지향 프로그래밍의 모든 레슨