본문 바로가기
프로그래밍/JAVA

초보 자바 프로그래밍(59) - this 키워드와 생성자 체이닝

by 머니테크리더 2025. 3. 24.
반응형

this키워드와 생성자체이닝

 

🔖 INDEX

     

     

    this 키워드란?

    자바에서 this 키워드는 현재 객체 자신을 가리키는 참조 변수입니다. 객체 내부에서 자신의 멤버(변수, 메서드)를 명확하게 구분할 때 사용됩니다.

    this 키워드의 주요 용도

    1. 멤버 변수와 지역 변수의 구분
    2. 다른 생성자를 호출 (생성자 체이닝)
    3. 현재 객체의 참조를 반환

     

    멤버 변수와 지역 변수의 구분

    자바에서는 생성자나 메서드 내부에서 지역 변수와 멤버 변수의 이름이 동일할 수 있습니다. 이 경우 this를 사용하여 멤버 변수를 명확하게 구분할 수 있습니다.

    예제 코드 (this를 이용한 멤버 변수 참조)

    class Person {
        String name;
        int age;
    
        // 생성자
        public Person(String name, int age) {
            this.name = name; // this를 사용하여 멤버 변수와 지역 변수 구분
            this.age = age;
        }
    
        void display() {
            System.out.println("이름: " + this.name + ", 나이: " + this.age);
        }
    }
    
    public class Main {
        public static void main(String[] args) {
            Person p = new Person("홍길동", 25);
            p.display();
        }
    }

     

    실행결과

    이름: 홍길동, 나이: 25

     

    위의 코드에서 

    this.name = name;

    은 지역 변수 name과 멤버 변수 name을 구분하는 역할을 합니다.

     

     

     

    생성자 체이닝 (Constructor Chaining)

    생성자 체이닝이란, 하나의 생성자가 같은 클래스의 다른 생성자를 호출하는 기법입니다. 이때 this(…) 문법을 사용합니다.

    생성자 체이닝의 장점

    1. 코드 중복 감소: 여러 생성자에서 공통 코드가 있다면, 하나의 생성자에서 처리하고 나머지는 해당 생성자를 호출하도록 하면 코드 중복이 줄어듭니다.
    2. 유지보수 용이: 공통 로직을 한 곳에서 관리할 수 있어 유지보수가 쉬워집니다.

    예제 코드 (생성자 체이닝)

    class Car {
        String model;
        int year;
        String color;
    
        // 기본 생성자
        public Car() {
            this("기본 모델", 2024, "검정색");
        }
        
        // 2개의 인자를 받는 생성자
        public Car(String model, int year) {
            this(model, year, "흰색");
        }
        
        // 3개의 인자를 받는 생성자 (가장 상세한 생성자)
        public Car(String model, int year, String color) {
            this.model = model;
            this.year = year;
            this.color = color;
        }
        
        void display() {
            System.out.println("모델: " + model + ", 연식: " + year + ", 색상: " + color);
        }
    }
    
    public class Main {
        public static void main(String[] args) {
            Car car1 = new Car();
            Car car2 = new Car("소나타", 2022);
            Car car3 = new Car("그랜저", 2023, "파란색");
            
            car1.display();
            car2.display();
            car3.display();
        }
    }

     

    실행결과

    모델: 기본 모델, 연식: 2024, 색상: 검정색
    모델: 소나타, 연식: 2022, 색상: 흰색
    모델: 그랜저, 연식: 2023, 색상: 파란색

    this(...) 를 사용하여 기본 생성자가 가장 상세한 생성자를 호출하도록 구성하였습니다.

     

     

     

    this 키워드를 이용한 메서드 호출

    객체 내부에서 자신의 메서드를 호출할 때도 this 키워드를 사용할 수 있습니다.

    예제 코드 (this를 이용한 메서드 호출)

    class Student {
        String name;
    
        Student(String name) {
            this.name = name;
        }
        
        void study() {
            System.out.println(name + " 학생이 공부를 합니다.");
        }
        
        void startStudying() {
            System.out.println("공부 시작!");
            this.study(); // 같은 클래스의 메서드 호출
        }
    }
    
    public class Main {
        public static void main(String[] args) {
            Student s = new Student("김철수");
            s.startStudying();
        }
    }

     

    실행결과

    공부 시작!
    김철수 학생이 공부를 합니다.

     

    위의 코드에서

    this.study();

    를 사용하여 startStudying() 내부에서 study() 메서드를 호출하였습니다.

     

     

    정리

    this 키워드의 주요 역할

    1. 멤버 변수와 지역 변수를 구분할 때 사용됩니다.
    2. 같은 클래스의 다른 생성자를 호출할 때 사용됩니다 (this(…)).
    3. 같은 클래스의 메서드를 호출할 때 사용됩니다 (this.method()).
    4. 현재 객체의 참조를 반환할 때 사용됩니다.

     

    생성자 체이닝의 주요 장점

    1. 코드 중복을 줄이고, 유지보수를 용이하게 합니다.
    2. 기본 생성자가 더 구체적인 생성자를 호출하도록 하여 코드 흐름을 명확하게 합니다.

     

     

    댓글