티스토리 뷰

Java+Spring/Java

[Java]생성자(Constructor)

Vagabund.Gni 2022. 7. 13. 11:23
728x90
반응형

생성자란 앞서 살펴봤던 클래스의 4가지 구성요소 중 하나로서,

 

인스턴스가 생성될 때 호출되는 <인스턴스 초기화 메서드>이다.

 

구체적으로는

 

Car bmw = new Car();

 

와 같이 인스턴스를 생성할 때, 가장 뒤에 쓰인 Car()가 바로 그 생성자이다.

 

추가로 생성자는 클래스의 구성요소이긴 하나 멤버는 아니라고 언급했었는데,

 

이 때문에 생성자는 상속되지 않고, 오버 라이딩의 대상이 되지도 않는다.

 

생성자는 메서드라고 편의상 적어두긴 했으나, 일반적인 메서드와는 크게 두 가지 차이점을 가지는데

 

  1. 생성자의 이름은 반드시 클래스의 이름과 같아야 한다.
  2. 생성자는 리턴 타입이 존재하지 않는다. 따라서 void 키워드도 쓰지 않는다.

가 그것이다. 즉, 엄밀하게 말하면 생성자는 메서드가 아니다. 메서드와는 다르다. 메서드와는..!

 

구체적인 생성자의 형태는 다음과 같은데,

 

public class ConstructorExample{
	public ConstructorExample(매개변수){
    
    	...
    
    }
}

 

생성자의 매개변수는 있을 수도 있고, 없을 수도 있다.

 

위와 같은 클래스와 생성자를 이용해 인스턴스를 생성하는 예를 다시 보자면

 

ConstructorExample example = new ConstructorExample(매개변수);

 

과 같은 형태가 될 것이다.

 

반면, 메서드와 비슷하게 생성자도 오버 로딩을 지원하는데, 메서드 때와 비슷하게 정의해 주면 된다.

 

예를 들면 다음과 같다.

 

public class ConstructorExample {
    public static void main(String[] args) {
        Constructor constructor1 = new Constructor();
        Constructor constructor2 = new Constructor("Hello World");
        Constructor constructor3 = new Constructor(5,10);
    }
}

class Constructor {
    Constructor() { // (1) 생성자 오버로딩
        System.out.println("1번 생성자");
    }

    Constructor(String str) { // (2) 
        System.out.println("2번 생성자");
    }

    Constructor(int a, int b) { // (3) 
        System.out.println("3번 생성자");
    }
}
// 출력 결과
1번 생성자
2번 생성자
3번 생성자

 

예의 Constructor 클래스 안에서 오버로딩을 활용하여 Constructor() 생성자가 여러 개 생성된 것을 볼 수 있다.

 

또한 (1) 번 생성자는 매개변수가 없고, (2), (3) 번 생성자는 매개변수가 있기 때문에 인스턴스를 생성할 때

 

각각 알맞은 인수를 넣어서 호출한 것도 확인할 수 있다.

반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함