본문 바로가기
자바 한계단

자바 생성자 복습

by juneMiller 2021. 9. 26.

생성자

new 연산자와 같이 사용되어 클래스로부터 객체를 생성할 때 호출되어 객체의 초기화를 담당한다. 

 

객체 초기화 : 필드를 초기화하거나, 메소드를 호출해서 객체를 사용할 준비 하는 것 

생성자를 실행하지 않고 클래스로 부터 객체를 만들수 없다.!

 

new 연산자에 의해 생성자가 성공적으로 실행되면, 힙 영역에 객체가 생성되고, 객체의 주소가 반환된다.

 

반환된 객체 주소는 클래스 타입 변수에 저장되어, 객체에 접근할 때 이용된다. 

만약 생성자가 실행되지 않고 예외(에러)가 발생 했다면, 객체는 생성되지 않는다. 

 

기본 생성자

모든  클래스는 생성자가 반드시 존재하며, 하나 이상 가질 수없다. 

클래스 내부 생성자 선언을 생략했다면, 컴파일러는 아래와 같이 중괄호 {} 블록 내용이 

비어있는 Dafault Constructor(기본 생성자) 를 바이트 코드에 자동 추가 시킨다.

 

 

public 클래스 { }

 

클래스가 public 없이 class 로만 선언되면, 기본 생성자에도 public 이 붙지 않는다. 

 

ex) Car 클래스를 설계할때 생성자를 생략하면 아래와 같이 기본 생성자가 생성된다. 

 

소스파일 Car.java 

public class car { 

}

바이트 코드 파일 Car.class 

public class car { 

	//기본생성자
	public car() { } // 자동으로 추가됨 
}

 

따라서 클래스 생성자를 선언하지 않다도, 아래와 같이 new 연산자 뒤에 기본 생성자를 호출해서 객체를

생성시킬 수 있다. 

 

car myNewCar = new car();

클래스에 명시적으로 선언한 생성자가 한개라도 존재하면, 컴파일러는 기본 생성자를 추가 하지 않는다. 

 

명시적으로 생성자를 선언하는 이유는 객체를 다양하게 초기화하기 위해서이다.

 


 

'자바 한계단' 카테고리의 다른 글

자바 오버로딩, this, this()  (0) 2021.10.01
자바 구성멤버 [메소드]  (0) 2021.09.27
필드부 복습  (0) 2021.09.24
클래스 복습  (0) 2021.09.24
자바 객체 지향 프로그래밍  (0) 2021.09.24