생성자
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 |