개발공부/JAVA
[JAVA] 클래스 - 생성자(Constructor)
jnnjnn
2024. 3. 5. 16:26
1. 생성자란?
생성자는 객체를 생성한 후 호출되어 객체를 초기화시키는 역할을 한다.
클래스 변수 = new 클래스(); // 클래스()<- 생성자
2. 기본 생성자
모든 클래스에는 생성자를 만들지 않아도 기본 생성자가 자동으로 만들어진다. 그러나 개발자가 명시적으로 선언한 생성자가 있다면 컴파일러는 기본 생성자를 추가하지 않는다.
3. 생성자 선언
클래스(매개변수, ...){
}
객체를 다양하게 초기화하기 위해서 생성자를 직접 선언할 수 있다. 생성자는 메소드와 비슷한 모양을 가지고 있으나, 리턴 타입이 없고 클래스 이름과 동일하다. 기본 생성자와 달리 매개변수를 대입받기 위해서 매개변수 값을 받는 생성자를 만들어줄 수 있다
4. 오버로딩
public class Car{
Car(){}
Car(String model){}
Car(String model, String color){}
Car(String model, String color, int speed){}
}
생성자는 매개변수 조건에 따라 여러개를 작성할 수 있다. 오버로딩이란 매개변수를 달리하는 생성자를 여러 개 선언하는 것을 말한다. 이때 생성자들을 타입과 개수, 선언된 순서가 달라야 하며 타입, 개수, 선언 순서가 같으면서 매개변수 이름만 바꾸는 것은 오버로딩이 아니다.
생성자가 오버로딩 되어 있을 경우, new 연산자로 생성자를 호출할 때 제공되는 매개값의 타입과 수에 따라 실행될 생성자가 결정된다.
5. this() 사용
같은 클래스의 생성자를 선언할 때 중복되는 생성자는 this() 를 통해 중복을 줄여줄 수 있다. this()란 다른 생성자 코드를 호출하는 것으로 생성자 코드에서만 사용된다. this()를 사용할 때에는 생성자 내에서 가장 윗줄에 위치해야 한다.
class C08MyClass {
String name;
int age;
String address;
public C08MyClass(String name, int age, String address) {
this.name = name;
this.age = age;
this.address = address;
}
public C08MyClass() {
// this.name = "홍길동";
// this.age = 1;
// this.address = "있음";
this("홍길동", 1, "없음"); // 위의 세 줄 코드와 동일
}
}