자바에서 생성자(Constructor)는 객체가 생성될 때 자동으로 호출되는 메서드이다.
1.기본 생성자(Default Constructor): 사용자가 명시적으로 생성자를 정의하지 않으면 컴파일러가 자동으로 제공하는 생성자이다. 이 생성자는 객체의 멤버 변수를 기본값으로 초기화한다.
class MyClass {
int num;
// 기본 생성자
MyClass() {
num = 100;
}
}
2.매개변수가 있는 생성자: 하나 이상의 매개변수를 가지는 생성자로, 객체를 생성할 때 특정 값으로 멤버 변수를 초기화하는 데 사용된다.
class MyClass {
int num;
// 매개변수가 있는 생성자
MyClass(int i) {
num = i;
}
}
package javaplus.constructor;
public class Constructor2 {
int num;
String name;
//기본 생성자
Constructor2(){
num = 100;
name = "나";
}
//매개변수가 있는 생성자
Constructor2(int i, String n){
num = i;
name = n;
}
public static void main(String[] args) {
//객체 생성
Constructor2 myObject = new Constructor2(100,"나");
//객체 출력
System.out.println("num: " + myObject.num);
System.out.println("name: " + myObject.name);
}
}
'this' 키워드를 사용하는 생성자는 클래스 내부에서 다른 생성자를 호출할 때 사용한다. 주로 생성자 오버로딩 상황에서 코드 중복을 줄이고, 하나의 생성자에서 다른 생성자의 로직을 재사용할 때 활용한다. 'this' 생성자는 이러한 이점이 있다.
package javaplus.constructor;
public class ThisEx {
int a;
int b;
//기본 생성자
public ThisEx(){
this(0,0); // 다른 생성자 호출
}
//매개변수가 있는 생성자
public ThisEx(int a, int b) {
this.a = a;
this.b = b;
}
public static void main(String[] args) {
//매개변수가 있는 생성자를 사용하여 객체 생성
ThisEx ex1 = new ThisEx(10,20);
//객체의 상태 출력
System.out.println("example1 a: " + ex1.a);
System.out.println("example1 b: " + ex1.b);
//기본 생성자를 사용하여 또 다른 객체 생성
ThisEx ex2 = new ThisEx();
//두 번쨰 객체의 상태 출력
System.out.println("example2 a: " + ex2.a);
System.out.println("example2 b: " + ex2.b);
}
}