IT/JAVA

자바 생성자 (Constructor)

바다, 2018. 1. 3. 14:36
반응형

생성자 (Constructor) 란


- 생성자는 인스턴스가 생성되는 시점 (new)에 딱 한번 호출 됩니다.


 객체를 초기화하고 heap 에 객체를 저장하는 메서드입니다.




생성자 (Constructor) 의 규칙


- 생성자에는 아래와 같이 두 가지의 규칙이 있습니다.


1. 생성자는 클래스 명과 동일해야 합니다. 


2. 생성자는 return 값이 존재하지 않습니다. (void 나 int 와 같이 리턴 타입이 선언되어 있지도 않습니다.)


ex)

 

public class ClassName {


modifier ClassName () {


}


}



 생성자는 중복 정의가 될 수 있습니다. (생성자 오버로드)


 같은 클래스 내에서 오버로딩 된 다른 생성자 하나를 호출하는 것은 생성자 구현부 첫 번째 줄에서만 this() 를 사용하여 가능합니다.


 모든 객체는 반드시 한 개 이상의 생성자를 갖으며,


 생성자를 정의하지 않았을 경우에는 JVM (자바 가상 머신, Java Virtual Machine)이 제공하는 생성자가 호출되어 집니다.




생성자 (Constructor) 의 종류


- 생성자는 기본 생성자(Default Constructor)와 명시적 생성자 (Explicit Constructor) 두 종류가 있습니다.



기본 생성자 (Default Constructor)


- 위에서 언급 했듯이 모든 클래스에는 반드시 하나 이상의 생성자가 정의 되어 있어야 하는데,

 지금까지 클래스에 생성자를 정의하지 않고도 인스턴스를 생성할 수 있었던 이유는 JVM 에서 자동으로 생성해주었기 때문입니다.


단, 생성자를 명시적으로 정의하면 기본 생성자는 자동으로 생성되지 않습니다.




명시적 생성자 (Explicit Constructor)


- 기본 생성자 외에 프로그래머가 명시적으로 선언하는 생성자로 이 경우에는 기본 생성자가 자동으로 생성되지 않습니다.


public class Test {


public Test(int a, int b) {


}


}



위와 같이 명시적으로 생성자를 선언하게 되면, 기본 생성자가 자동으로 생성되지 않으므로,


Test t = new Test();  를 하면 오류가 발생하기 때문에 


Test t = new Test(10, 20); 이런 식으로 호출해야 합니다.


명시적 생성자를 선언한 경우 기본 생성자를 사용하기 위해서는 프로그래머가 기본 생성자를 아래와 같이 선언해주어야 합니다.


public class Test {


public Test() {


}


public Test(int a, int b) {


}


}


그렇게 되면 


Test t = new Test(); 

Test t = new Test(10, 20);


모두 사용할 수 있게 됩니다.

반응형