Java

생성자란?

클래스의 객체가 생성될 때 자동으로 한 번 호출되는 특수 목적의 멤버 함수

레퍼런스 변수를 메모리 참조하기 전, 객체를 초기화하여 객체의 초기 상태를 설정하는 역할

  • 생성자는 반드시 1개 이상 있어야 함
  • 다른 멤버 함수와 다르게 리턴 타입이 없음
  • 생성자 이름은 클래스 이름과 동일한 이름이어야 함
  • 매개변수 조건에 따라 생성자 여러 개 작성 가능 (오버로딩 / Overloading)
  • 생성자 내에서 매서드를 활용 가능
  • 매개 변수를 가질 수 있음

 

1. 기본 생성자 / Default constructor

객체의 기본값으로 설정하는 매개변수가 없는 생성자

생성자를 생성하지 않으면 기본 생성자를 자동으로 생성

class Display {
    Display() { // 생성자 생성
        System.out.println("This is test text");
    }
}

public class Main {
    public static void main(String[] args) {
        Display view = new Display(); // 출력
    }
}

 

2. 매개 변수가 있는 생성자 / Parameterized Constructor

매개 변수를 사용하여 객체 생성 시 초기 값을 설정할 수 있도록 하는 생성자

class Display {
    String text;
    Display(String txt) { // 생성자 생성
        text = txt;
        System.out.println(text);
    }
}

public class Main {
    public static void main(String[] args) {
        Display view = new Display("test message"); // 출력
    }
}

 

3. 오버로딩 / Overloading

같은 이름의 생성자를 여러 개 사용하는 것

매개변수의 개수나 타입이 다른 여러 개의 생성자를 사용 가능

※ 오버로딩(Overloading)과는 다르다 (여기를 참조)

class Display {
    String text1, text2;
    int number;
    
    Display() {
        System.out.println("This is test text");
    }
    
    Display(String txt) {
        text1 = txt;
        System.out.println(text1);
    }
    
    Display(String txt, int num) {
        text2 = txt;
        number = num;
    	System.out.println(text2 + number);
    }
}

public class Main {
    public static void main(String[] args) {
        Display view1 = new Display(); // This is test text
        Display view2 = new Display("message 1"); // message 1
        Display view3 = new Display("message ", 2); // message 2
    }
}

 

4. this()

하나의 생성자에서 다른 생성자를 호출할 때 this()를 사용하여 코드 중복을 줄일 수 있음

※ this와 this()는 다른 개념

  • this : 인스턴스 매서드의 매개 변수로 선언된 변수명이 인스턴스 변수명과 같을 때, 인스턴스 변수와 지역 변수를 구분하기 위해서 사용
  • this() : 같은 class의 다른 생성자를 호출
class Display {
    String text;
    int number;
    
    Display() {
        this("message ", 0); // this()로 매개 변수가 있는 다른 생성자 호출
    }
    
    Display(String text, int number) { // 인스턴스 변수명과 매개 변수명이 같음
        this.text = text; // this로 구분
        this.number = number;
    }
    
    void show() {
        System.out.println(text + number);
    }
}

public class Main {
    public static void main(String[] args) {
        Display view1 = new Display();
        Display view2 = new Display("message ", 1);
        
        view1.show(); // 출력 : message 0
        view2.show(); // 출력 : message 1
    }
}

 

 

'Programming > Java' 카테고리의 다른 글

[Java] is-a 관계와 has-a 관계  (0) 2025.03.04
[Java] 상속 (Inheritance)  (1) 2025.03.04
[Java] 클래스 변수, 인스턴스 변수, 로컬 변수, 매개 변수  (0) 2025.02.28
[Java] Java란?  (1) 2025.02.28

+ Recent posts