Post

Java 9 , this.

Java, 주요 문법 정리

문법 : this()

바로 전 포스팅에서 정리했던 this와 유사하게 생긴 문법,
this()에 대해 정리해보겠습니다.

this()? this?

일단 작성하는 것부터 괄호 차이 밖에 없는 두 문법을 옛날엔
보기만해도 머리가 지끈거렸습니다.
오늘 블로그에 내용을 정리하며 두 문법의 차이, 사용법을 확실히 익혀보겠습니다.

this는 인스턴스의 자기 자신을 할당하는 것이라고 지난 포스팅에서 설명했습니다.
그렇다면 this()는?

1
2
3
4
5
6
7
8
9
10
class Car {
    public void Car() {
        this("그랜저" , 874567);
    }

    public void Car(String carName , int modelNo) {
        this.carName = name;
        this.modelNo = modelNo;
    }
}

이 코드에 this()에 모든 것이 포함되어있습니다.
한 줄로 요약해보자면, this()는 클래스 내에서 다른 생성자,
여기서는 다른 기능을 호출할 때 사용합니다.

자, 이게 무슨 말이냐면.
Car클래스 내애는 여러가지 기능들, 다양한 생성자가 선언 될 것입니다.

생성자의 이름이 모두 다르면 사용할 일이 없겠지만, Java에서는 다향성을 위해
같은 클래스의 이름을 여러번 사용하는 경우가 많습니다.
그럴떄마다 일일히 Car를 선언하기 귀찮으니, this()를 사용하여
코드를 간결화 시키는 것입니다.

Java에서는 간결화를 위해 많은 방법들이 있습니다.
그중 오늘은 this()를 사용한 예시를 적용시켜보았습니다.
마무리하는 겸 조금 더 긴 예제를 보여드리겠습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 class Car{
	String color; // 인스턴스 변수
    String gearType;
    int door; 
    
    Car(){
        this("white", "auto", 4);
    }
    
    Car(String color){
        this(color, "auto", 4);
    }
    
    Car(String color, String gearType, int door){
        this.color = color; 
        this.gearType = gearType;
        this.door = door;
    }
}

몇 가지의 Car생성자가 추가되었습니다.
Car(String color)이 생성자와 Car()생성자 모두 같은 생성자를 호출 하고 있습니다.
바로 마지막에 있는 Car(String color, String gearType, int door) 이 생성자를 말이죠.
this()를 사용하는 법은 위 예제 코드처럼 간단합니다.
this(매개변수1 , 매개변수2 ...)이렇게만 작성해주시면 됩니다.


그럼, 이렇게 써볼까요?

1
2
3
4
5
6
7
8
9
10
Class Car {
    String color;
    String gearType;
    int door;

    Car(){
        System.out.println("첫번째 생성자입니다.");
        this("black" , "auto" , 6);
    }
}

이렇게 작성해볼까요?
여러분이 사용하시는 개발 Tool에서 이 코드를 작성해보시면 아마 에러가 발생할 겁니다.
그 이유는 바로 this()는 항상 생성자의 첫번째 줄에 작성되어야한다는 규칙이 있습니다.
이 규칙에 맞추어 다시 작성해보면.

1
2
3
4
5
6
7
8
9
10
Class Car {
    String color;
    String gearType;
    int door;

    Car(){
        this("black" , "auto" , 6);
        System.out.println("첫번째 생성자입니다.");
    }
}

이렇게 변경할 수 있습니다.
이렇게 this()this에 대해 정리해보았습니다.
당연히 부족한 내용도 있지만, 그래도 이제는 this가 무엇인지는 감은 잡은 것 같아
조금 후련하네요.
다음에도 Java의 주요 문법이나 제가 개인적으로 어렵다 느낀 주제를 가지고 작성해보겠습니다.

This post is licensed under CC BY 4.0 by the author.