[Java] 생성자 메서드와 this

toget ㅣ 2023. 10. 3. 11:11

생성자의 정의

인스턴스(객체)가 생성될 때 자동으로 호출되는 특별한 메서드입니다.
인스턴스의 변수를 초기화하는데 주로 사용됩니다.
일반적인 메서드와는 달리 반환 타입을 가지지 않습니다.

 

기본 생성자의 자동 제공

프로그래머가 클래스 내에서 어떤 생성자도 정의하지 않았을 경우, Java 컴파일러는 기본 생성자(매개변수가 없는 생성자)를 자동으로 제공합니다.
만약 프로그래머가 하나 이상의 생성자를 명시적으로 정의하면, 컴파일러는 기본 생성자를 자동으로 추가하지 않습니다.

 

생성자의 이름

생성자의 이름은 항상 그것이 속한 클래스의 이름과 동일해야 합니다.

 

기본 생성자 (Default Constructor):
생성자가 클래스 내에서 명시적으로 정의되지 않았을 때 컴파일러에 의해 자동으로 제공되는 생성자입니다.
이 생성자는 매개변수가 없으며, 특별한 동작을 수행하지 않습니다.

 

class Car {
    String color; //자동차의 색상을 나타내는 문자열 변수
    String name; //자동차의 이름을 나타내는 문자열 변수
    String type; //자동차의 타입(예: 세단, SUV 등)을 나타내는 문자열 변수
    int price; : //자동차의 가격을 나타내는 정수 변수
	
    Car(){} //기본 생성자. 매개변수가 없으며 특별한 동작을 수행하지 않음
	
    //아래 생성자는 4개의 매개변수를 받아서 각각의 인스턴스 변수를 초기화
    Car(String c,String n,String t,int p){
        color= c;
        name = n;
        type = t;
        price = p;
	}
}

Car(String c, String n, String t, int p)는 Car 클래스의 생성자입니다. 이 생성자는 새로운 Car 객체를 생성할 때 사용되며, 객체를 생성하면서 동시에 그 객체의 속성(변수) 값을 설정(초기화)할 수 있습니다.

 

예를 들어, 아래와 같이 Car 객체를 생성하면

 

Car myCar = new Car("Red", "Mustang", "Sedan", 30000);

 

Car 클래스의 해당 생성자는 다음과 같이 동작합니다:

color = c; : myCar 객체의 color 속성을 "Red"로 설정합니다.
name = n; : myCar 객체의 name 속성을 "Mustang"로 설정합니다.
type = t; : myCar 객체의 type 속성을 "Sedan"로 설정합니다.
price = p; : myCar 객체의 price 속성을 30000으로 설정합니다.

 

즉, 생성자는 객체를 생성하는 '틀' 또는 '방법'이며, 이 생성자를 사용하면서 특정 값을 전달하면, 그 값을 사용해 객체의 속성(변수)을 초기화하는 것입니다.

 

this

this 키워드는 Java에서 특별한 의미를 가지며, 주로 객체 자신을 참조할 때 사용됩니다. 

생성자 내에서의 this()

클래스 내에 여러 생성자가 정의되어 있을 때, 한 생성자에서 다른 생성자를 호출할 필요가 있을 수 있습니다.
이를 위해 this()를 사용합니다.
this()를 사용하여 호출하는 생성자는 해당 생성자의 첫 번째 줄에 와야 합니다.

 

예시

class Car {
    String color;
    String gearType;
    int door;
//예시1
    Car() {
  	  this("White", "auto", 4);
    }
//예시2
    Car(String color) {
        this(color, "auto", 4);
    }
//예시3
    Car(String color, String gearType, int door) {
        this.color = color;
        this.gearType = gearType;
        this.door = door;
    }
}

예시1

디폴트 생성자 Car()는 매개변수가 없는 생성자
this("White", "auto", 4);라는 코드를 통해 Car2(String color, String gearType, int door) 생성자를 호출하며, 매개변수로 "White", "auto", 4를 전달합니다.

 

이렇게 되면, Car2 객체를 생성할 때 특별한 값을 전달하지 않아도 기본적으로 색상은 "White", 기어 타입은 "auto", 문의 수는 4로 설정됩니다.

 

예시2

색상을 매개변수로 받는 생성자 Car(String color)

this(color, "auto", 4);라는 코드를 통해 Car(String color, String gearType, int door) 생성자를 호출하며, 입력받은 color 값을 그대로 전달하고, 기어 타입은 "auto", 문의 수는 4로 기본값을 전달합니다.

 

예시3

색상, 기어 타입, 문의 수를 매개변수로 받는 생성자 Car(String color, String gearType, int door)

 

this.color = color;, this.gearType = gearType;, this.door = door;와 같은 코드를 통해 해당 인스턴스(객체)의 변수들을 초기화합니다. 이 생성자는 주어진 매개변수를 사용해 Car 객체의 색상, 기어 타입, 문의 수를 초기화합니다.
이렇게 여러 생성자를 정의함으로써, Car 객체를 다양한 방식으로 초기화할 수 있습니다.

 

참조변수 this


this는 객체(인스턴스) 자신을 참조하는 키워드입니다.
주로 메소드나 생성자 내에서 사용되며, 인스턴스 변수와 지역 변수를 구분할 때 유용하게 사용됩니다.

 

public void setName(String name) {
	this.name = name;
}

여기서, this.name는 클래스의 인스턴스 변수 name을 의미하고, name은 setName 메서드의 매개변수를 의미합니다. this.name = name;는 매개변수로 받은 name 값을 인스턴스 변수 name에 저장하는 것을 나타냅니다.

이러한 방식으로, this는 Java에서 객체 자신을 참조하거나, 클래스 내 다른 생성자를 호출하는 데 사용되는 특별한 키워드입니다.

 

참조

https://velog.io/@yj-leee/%EC%83%9D%EC%84%B1%EC%9E%90

'Java' 카테고리의 다른 글

[Java] java.lang 클래스  (0) 2023.10.03
[Java/eclipse] Module (class path, module path)  (0) 2023.10.03
[Java]2차 배열과 for-each문  (0) 2023.10.03
[Java] 중첩 for문  (0) 2023.10.03
[Jave] 반복문에서 continue, break 명령어  (0) 2023.10.03