생성자는 new 연산자와 같이 사용되어 클래스로부터 객체를 생성할 때 호출되어 객체의 초기화를 담당한다. 객체 초기화란 필드를 초기화하거나, 메소드를 호출해서 객체를 사용할 준비를 하는것이다.
자바에서의 객체는 생성자를 실행시키지 않고서 만들 수 없다. new 연산자에 의해 생성자가 성공적으로 실행되면 힙 영역에 객체가 생성되고 객체 주소가 리턴된다.
모든 클래스에는 생성자가 반드시 존재하며, 하나 이상을 가질 수 있다(오버로딩). 만약 개발자가 클래스 내부의 생성자 선언을 생략했으면 컴파일러는 기본 생성자를 바이트 코드에 자동 추가 시킨다.
예를들어 소스 파일(A.java)에선
class A
{
}
이면 바이트 코드파일(A.class)에서는
class A
{
public A()
{
}
}
와 같이 생성된다.
생성자는 메소드와 비슷한 모양을 가지고 있으나, 리턴 타입이 없고 클래스 이름과 동일하다. 클래스 이름과 동일하다는 것이 중요하다.
만약 생성자 안이
class A
{
public A(int a, int b)
{
}
}
이면 다른 곳에서 객체를 생성할 때
A a = new A(10, 20); 이런식으로 호출해야한다.
또한
public A(int a){
}
public A(int a, int b){
}
와 같이 생성자는 오버로딩이 가능하다
생성자 오버로딩은 안에 들어가는 매개변수가 다른 것이다.
만약 매개변수 하나인 생성자에서 매개변수가 2개짜리인 생성자를 호출하려면 this()라는 키워드를 이용할 수 있다.
public A(int a){
this(a, 20);
}
public A(int a, int b){
}
이와같이 this 키워드를 이용해 다른 생성자를 호출 할 수 있다.
'java' 카테고리의 다른 글
자바 정적 멤버, static (0) | 2017.08.10 |
---|---|
자바 메소드 (0) | 2017.08.10 |
자바 객체, 객체 지향 프로그래밍 (0) | 2017.08.10 |
자바 향상된 for문(foreach문) (0) | 2017.08.10 |
자바 메모리 영역 (0) | 2017.08.10 |